如何在bash脚本中执行此操作?
#!/bin/sh
func() {
export ${NAME}_SUFFIX=`result_of_some_command`
}
NAME=my_name
func
# This variable will become my_name_SUFFIX
# but how can I reference it using $NAME?
echo ${${NAME}_SUFFIX} # Doesn't work...
我会使用声明,如果它可以通过函数调用,但它似乎没有。另外,我的声明版本不支持-x。
答案 0 :(得分:3)
您可以使用间接参数扩展:
varname=${NAME}_SUFFIX
echo "${!varname}"
bash
4.3还引入了namerefs,它使用起来有点简单。
$ NAME=FOO
$ FOO_SUFFIX=3
$ declare -n varname=${NAME}_SUFFIX
$ echo $varname
3
答案 1 :(得分:1)
您需要变量间接,这是通过!
:
var_name=test
test=value
echo ${var_name} # will echo test
echo ${!var_name} # will echo value
答案 2 :(得分:-1)
我知道你要做的是什么...... 警告 ......" eval"这是一种可怕的方式,变量间接更好。但是,这就是你要求的。
对您的脚本进行一次简单的更改:
改变"出口"到" eval"它会起作用。你大部分都在那里! 哦,改变你的回声"声明如下所示。
示例:强>
from ..subpackage2 import myclass