惯用bash:为变量设置默认值
如何以简洁、惯用的方式为bash变量设置默认值?这看起来很难看:惯用bash:为变量设置默认值,bash,idioms,Bash,Idioms,如何以简洁、惯用的方式为bash变量设置默认值?这看起来很难看: if [[ ! -z "$1" ]]; then option="$1" else option="default" fi 您可以使用: option=${1:-default} 如果给定了第一个命令行参数且不为null,则此选项将设置第一个命令行参数的选项。否则,它会将选项设置为默认值。有关参数扩展和此表单的一些有用变体的详细信息,请参阅。您可以使用: option=${1:-default} 如果给定了第
if [[ ! -z "$1" ]]; then
option="$1"
else
option="default"
fi
您可以使用:
option=${1:-default}
如果给定了第一个命令行参数且不为null,则此选项将设置第一个命令行参数的选项。否则,它会将选项设置为默认值。有关参数扩展和此表单的一些有用变体的详细信息,请参阅。您可以使用:
option=${1:-default}
如果给定了第一个命令行参数且不为null,则此选项将设置第一个命令行参数的选项。否则,它会将选项设置为默认值。有关参数扩展和此表单的一些有用变体的详细信息,请参阅。对于除指定默认值(Toxaris已经介绍过)以外的其他用途,值得一提的是,对
-z
有一个反向测试,因此
if [[ ! -z "$1" ]]; then
do_something
fi
你可以简单地写:
if [ -n "$1" ]; then
do_something
fi
如果没有else
分支,可以将其缩短为:
[ -n "$1" ] && do_something
对于除指定默认值(Toxaris已经介绍过)以外的其他用途,值得一提的是,对
-z
有一个反向测试,因此
if [[ ! -z "$1" ]]; then
do_something
fi
你可以简单地写:
if [ -n "$1" ]; then
do_something
fi
如果没有else
分支,可以将其缩短为:
[ -n "$1" ] && do_something
请注意,如果您使用显式的空第一个参数调用脚本,则其行为可能与问题中的代码不同。“不,不会,因为您使用了冒号。”。如果您编写
${1-default}
,则它将区分未设置参数和设置但为空的参数。@RomanCheplyaka,谢谢,在手册中确认了这一点并编辑了答案。“请注意,如果您使用显式空的第一个参数调用脚本,则其行为可能与问题中的代码不同。”不,不会,因为你用了冒号。如果您编写${1-default}
,则它将区分未设置和设置但为空的参数。@RomanCheplyaka,谢谢,在手册中确认了这一点并编辑了答案。+1表示完整的答案(尽管可能有点太简洁[缺少示例])。+1表示完整的答案(尽管可能有点太简洁[缺少示例])回答。或者如果[“$1”],只需;然后…
[-n“$1”]&&do_some
有一个缺点-如果设置了set-e
。@anishsane就set-e
而言,[…]和&command
与if[…]相同;然后指挥;fi
。[…]
命令可以安全地失败,如果它运行失败,命令将退出shell。哦。。。我的错误。我不知道。。谢谢。或者干脆如果[“$1”];然后…
[-n“$1”]&&do_some
有一个缺点-如果设置了set-e
。@anishsane就set-e
而言,[…]和&command
与if[…]相同;然后指挥;fi
。[…]
命令可以安全地失败,如果它运行失败,命令将退出shell。哦。。。我的错误。我不知道。。谢谢