使用getopt获取参数

时间:2015-04-28 15:04:38

标签: shell unix getopt

我是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

我做错了什么?提前谢谢。

0 个答案:

没有答案