【发布时间】:2012-01-06 16:39:41
【问题描述】:
我正在使用 getopts 来解析在 bash 下运行的自定义脚本的选项。
实现这一点的代码非常标准:
while getopts :s: opt; do
case $opt in
s)
echo "\$OPTARG is $OPTARG"
;;
esac
done
但是对于我使用数字参数指定的参数,$OPTARG 是空的:
myscript.sh -s 012345 # => [ $OPTARG = "" ]
可以通过将参数括在引号中来解决此问题。不过,这对于数字参数来说是丑陋的。
myscript.sh -s "012345" # => [ $OPTARG = "012345" ]
还有比这更优雅的解决方案吗?
更新
事实证明,我的实际代码缺少一个“:”,因此该参数不期望有参数。我不知道为什么字符串值会打印出预期的值,但是数字参数现在可以工作了,我已经指定参数需要一个 arg。
【问题讨论】:
-
您应该显示您的代码并准确指定您正在使用的 shell。
-
完成,感谢您的明智建议。
-
它对我有用,输出:
$OPTARG is 012345。什么版本的 Bash?您的脚本中是否有 shebang(代码中未显示)? -
Ack 我刚刚意识到为什么它不起作用,更新后。感谢丹尼斯为我测试,非常感谢!
-
您可以发布您的发现作为答案然后接受它。
标签: posix numeric arguments getopts