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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参数扩展的双冒号有什么作用?相关的知识,希望对你有一定的参考价值。

shell脚本中的subjectAltName = ${ENV::subjectAltName}是什么意思?我在MacOS本地尝试了这个,它只返回null。

我已经去过关于bash脚本的各种教程,我发现了类似的东西

subjectAltName = ${ENV:-subjectAltName}

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

我也见过这种用法:

$ENV::HOME/.rnd

在这里,我期望这些变量的连接。

这用于openssl.conf文件。

答案

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

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

以上是关于参数扩展的双冒号有什么作用?的主要内容,如果未能解决你的问题,请参考以下文章

双冒号是啥意思?

Shell脚本里的双冒号是什么意思

“::before”和“:before”中的双冒号和单冒号的区别

使用 ActionBar 旋转 Android 的双片段

R中的双冒号(::)是啥?

Pig中的双冒号到底是啥意思?