处理可选参数的bash脚本

时间:2013-01-10 21:44:49

标签: bash shell

我有一个bashscript,它需要一个可选参数,如下所示,有几件事我想对它进行优化,以便我可以用不同的方式传递第一个参数(0,false表示一个错误值,所有其他字符串表示true,默认为false),这是一种优雅的脚本编写方式吗?我想使用带有正确布尔表达式的if语句。

if [ -n "$1" ]; then
    update_httpconf="$1";
fi
if [ "$update_httpconf" = "true" ]; then
    echo "hi";
fi

2 个答案:

答案 0 :(得分:3)

如果你这样做是为了让第一个参数--update-httpconf计为真,而其他任何东西都算错,那么它将与其他unixey命令行实用程序更加一致。

这可能是一个很好的起点:

while [ $# -gt 0 ]
do
    case $1 in
        '--update-httpconf')
            update_httpconf=true
            ;;
        *)
            echo "unrecognised arg $1"; exit
            ;;
    esac
    shift
done

答案 1 :(得分:0)

使用case声明:

case "$1" in
  0|false|FALSE) do_something;;
  *) do_something_else;;
esac