我正在使用 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。