使用getopts编写一些脚本。它包括下一个:
while getopts "hlcpx:" opt; do
case $opt in
h)
usage && exit 1
;;
l)
last=1
current=""
;;
c)
current=1
last=""
;;
p)
prints=1
exports=""
;;
x)
exports=1
prints=""
;;
\?)
usage && exit 1
;;
esac
done
echo "Using: current=$current last=$last prints=$prints exports=$exports"但是-当我使用选项-x和-c运行它时,我得到了:
$ ./version.sh -x -l
Using: current= last= prints= exports=1
$ ./version.sh -x -c
Using: current= last= prints= exports=1如果我删除了: -它正确地工作:
$ cat version.sh | grep whil
while getopts "hlcpx" opt; do
$ ./version.sh -x -c
Using: current=1 last= prints= exports=1
$ ./version.sh -x -l
Using: current= last=1 prints= exports=1我做错什么了?谢谢。
发布于 2013-11-26 08:37:25
getopts按设计的方式工作。如果不需要将参数传递给-x选项,则不要将:添加到getopts选项字符串中的x中。
或者,按照预期的语法使用您的脚本,例如:
./version.sh -x foo -chttps://stackoverflow.com/questions/20211915
复制相似问题