jet*_*set 2 bash shell quotes variable-expansion
${parameter:-word}如果未设置变量,使用参数扩展的形式评估为默认值时,引号的最佳做法是什么?
例如,假设带有-uset 的Bash shell脚本(在计算未定义或未设置的变量时生成错误),以测试变量是否具有值,写入等效的最佳方法是if [[ -z "$FOO" ]]什么?
if [[ -z "${FOO:-}" ]]
Run Code Online (Sandbox Code Playgroud)
要么
if [[ -z ${FOO:-""} ]]
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?
如果您使用的是最新版本bash(撰写本文时为4.2),则可以使用该-v选项测试是否设置了变量而不尝试扩展它.
if [[ -v FOO ]]; then
echo "FOO=$FOO"
else
echo "FOO not set"
fi
Run Code Online (Sandbox Code Playgroud)
如果您使用的是旧版本,我会使用
if [[ -z ${FOO:-} ]];
Run Code Online (Sandbox Code Playgroud)
报价不是必需的,IMO看起来最干净.
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |