-2

我已经看到在 Bourne 派生的 shell 的参数扩展中使用默认值的几种不同方法::==和. 我想知道它们有何不同。手册说,并且处理空值与和不同。但据我所知,==和== 。这是真的?:---=:-:=:=:-=-

4

3 回答 3

3

:=vs的演示:-

 $ unset foo
 $ echo ${foo:-bar}
 bar
 $ echo foo
 
 $ echo ${foo:=bye}
 bye
 $ echo $foo
 bye

:-只影响展开的结果,保持参数不变。如果参数为空或未设置,则:=实际上将默认值分配给参数。

=类似于-关于未设置参数的工作;它仅在未设置时更改值foo,而不是在它具有空值时更改。

于 2020-07-01T18:10:09.690 回答
0

即使问题已经得到解答,我只想发布一个指向shell 圣经的链接,在这里您不仅可以找到参数扩展的很好解释,还可以找到几乎所有与 shell 相关的解释。

于 2020-07-01T18:47:16.943 回答
0

文档是明确的。

通过=表格,重点补充说:

如果parameter未设置或为 null,则将 word 的扩展分配给parameter 然后替换参数的值。[...]

与其他形式:

如果参数未设置或为空,则替换单词的扩展。否则,参数的值被替换。

在不使用表单的情况下,不会发生赋值,在以后扩展为变量时修改参数的值。=

于 2020-07-01T18:12:37.723 回答