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