这个 shell 分配的可移植性如何?

这个 shell 分配的可移植性如何?

VAR=${VAR:-值}

目的是将环境变量 VAR 设置为值,除非它已经设置。

我看到它可以在 bash 和 dash 中运行,但是它的便携性如何?

答案1

这个分配是可移植的,它可以在任何 POSIX shell 中工作。 POSIX 定义这个扩展作为:

${参数:-word}

使用默认值。如果参数未设置或为空,则替换单词的扩展;否则,应替换参数的值。

但如果已设置并且为 null,则这也会设置VAR为值。VAR要设置VAR值(除非已经设置),您必须使用:

VAR=${VAR-value}

省略冒号使得仅当变量未设置时才发生替换:

在前面显示的参数扩展中,在格式中使用冒号将导致对未设置或为空的参数进行测试;省略冒号将导致对仅未设置的参数进行测试。

相关内容