我目前正在解析脚本中的选项:
while getopts ":ia" OptionArgument; do
case $OptionArgument in
i ) echo "bli";;
a ) echo "bla";;
* ) echo "flag not known";;
? ) echo "unknown parameter";;
esac
done
每个解析选项和标志都有效 - 除了这一个:? )
。因此,如果我用./MyScript hjrfgdskjgh
之类的方法调用我的脚本,它会正确地传递循环 - 尽管它应该在? )
的最后一行中捕获。
我还尝试删除":ia"
或使用\?
或. )
的引号 - 没有任何作用!我做错了什么?
答案 0 :(得分:4)
?
字符具有特殊含义,请参阅http://tldp.org/LDP/abs/html/special-chars.html#WILDCARDQU您无法使用未转义或未加引号的字符。您必须使用./script.sh -'?'
或./script.sh -\?
答案 1 :(得分:0)
*
匹配任何内容。把任何东西放在它下面是毫无意义的,只有当*
与它不匹配时才会匹配。