【发布时间】:2014-04-04 01:38:46
【问题描述】:
我正在查看几个在 ${ } 之间使用 := 的 bash 脚本。例如,模式如下所示:
export VAR=${VAR:=value}
这是在做什么? 如果 VAR 不存在,是否将 value 分配给 VAR?
【问题讨论】:
-
仅供参考,
export不是必需的,除非您希望子进程看到此值。更典型的用法是: "${var:=value}"(是的,小写——按照惯例,全大写名称是为环境变量和内置函数保留的)。:是一个 noop,所以唯一的副作用是:=参数扩展的副作用,它不仅有条件地扩展,而且在适当的时候修改var本身。 -
...更多关于常规/典型用法的信息:引号有两个原因:首先,它们可以防止 shell 做不必要的工作(字符串拆分和全局扩展一个值,这将是丢弃);其次,他们确保如果您使用
set -x,您会看到一个未被此类扩展修改的值,从而在调试时为您提供更好的信息。 -
有关一般参数扩展的更多信息,另请参阅mywiki.wooledge.org/BashFAQ/073。