如果getopts中提供了多个选项并且一些需要参数而有些不需要参数,会怎么样? getopts的参数挑选下一个参数作为参数getopts参数选择下一个参数作为参数
#!/bin/bash
while getopts ":a:b:cde:f:g:" opt; do
case $opt in
a)
echo "-a was triggered, Parameter: $OPTARG" >&2
;;
b)
echo "-b was triggered, Parameter: $OPTARG" >&2
;;
c)
echo "-c was triggered, Parameter: $OPTARG" >&2
;;
d)
echo "-d was triggered, Parameter: $OPTARG" >&2
;;
e)
echo "-e was triggered, Parameter: $OPTARG" >&2
;;
f)
echo "-w was triggered, Parameter: $OPTARG" >&2
;;
g)
echo "-g was triggered, Parameter: $OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
这里是我的问题:
$ ./hack.bash -a -b
-a was triggered, Parameter: -b
难道不应该显示-a缺少一个参数,而不是采取下一个选项作为参数。我在这里做错了什么?
'-b'被认为是选项'-a'的一个参数,所以你看到的行为是正常的。 –