Shell脚本中的“ $ {!var}”是什么意思?

坦普斯

我有以下情况的代码块,不确定其确切作用。

$var = "${args}_Some_Text"
if [ "${!var}"  == '' ];then
     echo "$var is not defined !!!"
fi 
fedorqui'停止伤害'

这称为变量间接扩展。

$ hello="this is some text"   # we set $hello
$ var="hello"                 # $var is "hello"
$ echo "${!var}"              # we print the variable linked by $var's content
this is some text

如您所见,这是定义“变量”的一种方法。即,使用内容为另一个变量名称的变量。

Bash参考手册→3.5.3 Shell参数扩展

如果parameter的第一个字符是感叹号(!),而parameter不是nameref,则它引入了一个变量间接寻址级别。Bash使用由其余参数形成的变量的值作为变量的名称;然后扩展此变量,并在其余替换中使用该值,而不是参数本身的值这称为间接扩展。如果parameter是nameref,则扩展为parameter引用的变量的名称,而不是执行完整的间接扩展。例外情况是$ {!prefix *}和$ {!name [@]}的扩展如下所述。感叹号必须紧随左括号之后才能引入间接指示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章