3

因此,传统上,当我编写带有参数标志的 bash 脚本时,我会使用这样的基本测试语句来实现默认值

if [ -z $foo ]
then
    foo=$bar
fi

今天我遇到了更高级的参数扩展,它们似乎做同样的事情

${foo:=$bar}

这两种方法如何比较?它们的优点/缺点是什么?

编辑:修正了评论中指出的一些错别字

4

1 回答 1

5

典型的成语是

: ${foo:=$bar}

作为替代品

if [ -z "$foo" ]
then
    foo=$bar
fi

(注意引号和空格!)

在前者中,参数扩展处理其他无操作命令的分配。它更简洁,但除此之外几乎没有理由选择其中一个。请注意,两者都受 POSIX 支持。

于 2018-07-06T19:37:52.117 回答