我正在研究使用${parameter:-word}
vs 的参数扩展${parameter:=word}
。
${parameter:-word}
如果参数未设置或为空,则替换单词的扩展。
${parameter:=word}
如果参数未设置或为空,则将单词的扩展分配给参数。然后替换参数的值。
当然,关键的区别在于每个描述的第一句,替换与分配。
但实际上,我不知道当某事是时substituted
与当某事是时会发生什么assigned
。
最后,什么时候使用其中一种比较合适?
考虑这个例子:
#!/bin/bash
echo "${parameter:-a}"
echo "${parameter:-b}"
echo "${parameter:=c}"
echo "${parameter:=d}"
Run Code Online (Sandbox Code Playgroud)
以及脚本的运行示例:
$ bash ex.sh
a
b
c
c
Run Code Online (Sandbox Code Playgroud)
在第一个 中echo
,parameter
未设置,因此a
被替换。这打印a
.
在第二个中echo
,parameter
仍未设置,因此b
被替换。这打印b
.
在第三个 中echo
,parameter
仍然未设置,因此parameter
被分配了值c
,然后parameter
进行求值。这打印c
.
在第四个 echo 中,设置了parameter
( 在上一个语句中设置为),因此打印其值。这再次打印。c
c
由此可以看出,如果未设置或为 null,${parameter:-word}
则计算结果为,但不会影响的值,而如果未设置为 null,则会设置的值。word
parameter
parameter
${parameter:=word}
parameter
归档时间: |
|
查看次数: |
819 次 |
最近记录: |