带参数扩展的双冒号有什么作用?

时间:2018-10-10 02:15:53

标签: bash shell openssl

shell脚本中的subjectAltName = ${ENV::subjectAltName}是什么意思?我已经在MacOS上进行了本地尝试,但它只会返回null。

我看过有关bash脚本的各种教程,发现类似

subjectAltName = ${ENV:-subjectAltName}

表示如果ENV未设置或为null,将替换subjectAltName的扩展名。否则,将替换ENV的值,但是在参数扩展的上下文中我没有看到双冒号。有关该教程,请参见here。还有here

我也看到了这种用法:

$ENV::HOME/.rnd

在这里,无论这些变量是什么,我都希望串联起来。

这用于openssl.conf文件。

1 个答案:

答案 0 :(得分:4)

这不是shell语法,它是openssl.conf和OpenSSL CONF库所独有的功能。 config(5) man page说:

  

还可以使用语法$section::name${section::name}替换另一个节中的值。通过使用$ENV::name形式,可以替换环境变量。