我想使用下面的代码在脚本中解析多个getopts
参数bash
。
while getopts b:B:m:M:T flag
do
case "${flag}" in
b) rbmin=${OPTARG};;
B) rbmax=${OPTARG};;
m) mbmin=${OPTARG};;
M) mbmax=${OPTARG};;
T) sigType=${OPTARG};;
esac
done
echo $rbmin,$rbmax,$mbmin,$mbmax, $sigType
[amit@amitk]$ sh pass.sh -b 0.1 -B 0.3 -m 10 -M 11 -T sig
0.1,0.3,10,11,
我不知道为什么我不能传递超过四个参数。有什么建议么?
您似乎
:
在T
给定的选项字符串中缺少getopts
. 这:
表明-T
需要一个选项参数。如果没有
:
,-T
将是一个没有参数的选项,并且您的调用将sig
作为操作数留在命令行末尾而不是作为选项参数。测试:
另请注意,如果您使用显式解释器(如
sh
)运行脚本,则可能不会使用bash
. 我之所以提到这一点,是因为您bash
在问题中提到了“脚本”。在这种情况下,可以,因为脚本不需要bash
,但最好使用#!
顶部带有正确 - 行的可执行文件。