【发布时间】:2018-03-04 22:25:16
【问题描述】:
如果 getopts 中提供了多个选项,有些需要参数而有些不需要,该怎么办? getopts arguments 选择下一个参数作为参数
#!/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的参数,因此您看到的行为是正常的。