我有以下情况的代码块,不确定其确切作用。
$var = "${args}_Some_Text"
if [ "${!var}" == '' ];then
echo "$var is not defined !!!"
fi
这称为变量间接扩展。
$ 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
如您所见,这是定义“变量”的一种方法。即,使用内容为另一个变量名称的变量。
如果parameter的第一个字符是感叹号(!),而parameter不是nameref,则它引入了一个变量间接寻址级别。Bash使用由其余参数形成的变量的值作为变量的名称;然后扩展此变量,并在其余替换中使用该值,而不是参数本身的值。这称为间接扩展。如果parameter是nameref,则扩展为parameter引用的变量的名称,而不是执行完整的间接扩展。例外情况是$ {!prefix *}和$ {!name [@]}的扩展如下所述。感叹号必须紧随左括号之后才能引入间接指示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句