我是shell脚本的新手,我已经按照一些教程编写了这个脚本。基本上选项-a只是一个标志,选项-b接受参数。
这是脚本:
#!/bin/bash
opt_a=off
opt_b=off
arg_b=""
set -- `getopt ab: "$@"`
[ $# -lt 1 ] && exit 1 # getopt failed
while [ $# -gt 0 ]
do
case "$1" in
-a)
opt_a=on
echo "opt a on"
shift
;;
-b)
opt_b=on
arg_b=$2
echo "opt b on and $2"
shift
;;
-*)
echo "error in opt"
exit 1
;;
*)
break
;; # terminate while loop
esac
shift
done
我希望能够单独调用选项,或同时调用两者。当脚本使用不同的选项运行时会发生这种情况:
$./opts.sh -a
opt a on
$./opts.sh -b value
opt b on and value
error in opt
$./opts.sh -b value -a
opt b on and value
opt a on
$./opts.sh -a -b value
opt a on
我做错了什么?提前谢谢。