如果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'的一個參數,所以你看到的行爲是正常的。 –