我正在写一个接受参数的bash脚本。我正在使用getopts来实现它。
#!/bin/bash
while getopts ":a" opt; do
case $opt in
a)
echo "-a was triggered!" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done但是上面的代码返回给我这个错误。
'etOpts_test.sh: line 4: syntax error near unexpected token `in
'etOpts_test.sh: line 4: ` case $opt in我使用的是CentOs 5.5
发布于 2011-12-19 19:56:42
在第4行,您可能需要case "$opt" in (引用$opt)。否则,如果它包含元字符,它可能会失败。
发布于 2011-12-19 20:04:23
它应该是a:,而不是:a来表示需要参数的标志,而且不应该用问号加引号,因为它用作通配符。整体代码将是(还演示了一个不带参数的标志-h ):
function usage {
echo "usage: ..."
}
a_arg=
while getopts a:h opt; do
case $opt in
a)
a_arg=$OPTARG
;;
h)
usage && exit 0
;;
?)
usage && exit 2
;;
esac
donehttps://stackoverflow.com/questions/8560939
复制相似问题