我在一些脚本中看到有一个连接到shell变量的连字符。例如:
if [ -z ${X-} ]
变量旁边的这个连字符符号在这里做什么。 我在网上找不到任何文件。
答案 0 :(得分:5)
所有这些都在Shell Parameter Expansion section of the manual中解释:
${parameter:-word}
如果
parameter
未设置或为null,则word
的扩展将被替换。否则,parameter
的值将被替换。
就在此之前:
省略冒号只会导致对未设置的参数进行测试。
所以:
${X-stuff}
扩展为:
$X
时X
的扩展stuff
未设置,则X
。试一试:
$ unset X
$ echo "${X-stuff}"
stuff
$ X=
$ echo "${X-stuff}"
$ X=hello
$ echo "${X-stuff}"
hello
$
现在你的扩展是
${X-}
所以如果$X
设置为X
,你会猜到它扩展为X
,如果set -u
未设置则扩展为空字符串。
你为什么要这样做?对我来说,这似乎是$ set -u
$ unset X
$ echo "$X"
bash: X: unbound variable
$ echo "${X-}"
$
:
if [ -z "${X-}" ]
最后,你的考试
X
(注意引号,它们是必需的)测试X
是否为零(无论set -u
是否设置,即使使用了geom_boxplot(position=position_dodge(0))
)。