我找不到任何可以解释下面语法的文档。 它在bash脚本中做了什么?这是考试吗?
: ${foo:=bar}; export foo
答案 0 :(得分:6)
:
命令是null utility:
该实用程序只能扩展命令参数。它在需要命令时使用,如if命令的then条件,但命令不会执行任何操作。
除了扩展参数和执行重定向之外什么都不做。返回状态为零。
${foo:=bar}
语法是一种特殊的Parameter Expansion:
${parameter:=[word]}
指定默认值。如果参数未设置或为null,则应将字的扩展(如果省略字,则为空字符串)分配给参数。在所有情况下,参数的最终值应替换。只能以这种方式分配变量,而不是位置参数或特殊参数。
Bash参考手册entry:
${parameter:=word}
如果参数未设置或为null,则将字的扩展分配给参数。然后替换参数的值。不能以这种方式分配位置参数和特殊参数。
所以问题中的命令行是:
: ${foo:=bar}; export foo
有两个命令:
: ${foo:=bar}
export foo
第一个扩展变量foo
,如果它为空或未设置,则为其赋值bar
。
然后第二个为子shell和其他进程导出foo
变量。