5

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

如果 [ -n "$1" ]; 然后
    update_httpconf="$1";
菲
如果 [ "$update_httpconf" = "true" ]; 然后
    回声“嗨”;
菲
4

2 回答 2

3

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

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

while [ $# -gt 0 ]
do
    case $1 in
        '--update-httpconf')
            update_httpconf=true
            ;;
        *)
            echo "unrecognised arg $1"; exit
            ;;
    esac
    shift
done
于 2013-01-10T22:18:46.887 回答
0

使用case声明:

case "$1" in
  0|false|FALSE) do_something;;
  *) do_something_else;;
esac
于 2013-01-10T22:15:11.720 回答