我必须打印一个变量值,它是艺术变量。 例如。变量是
A = X
Z_X = Test
在 shell 中使用
setenv A X
setenv Z_X Test
我想使用 $A 打印 $Z_X 值
我正在尝试,但没有成功。
echo ${Z_${A}}
echo ${Z_[$A]}
谁能告诉我哪里错了。
问候
最佳答案
A = X
Z_X = Test
这似乎是错误的;在csh
中,需要使用set
关键字来赋值变量;此外,约定还对“普通”变量使用小写,对环境变量使用大写:
set a = x
set z_x = Test
然后您可以使用 eval
得到您想要的:
% eval echo \$z_$a
Test
% set x = `eval echo \$z_$a`
% echo $s
Test
如果您不信任 $a
的来源,这可能是危险的,因为它也可能执行 rm -rf/
或类似危险的东西(但如果你相信 $a
的来源,那完全没问题)。
您可以使用 set
获取所有变量的列表:
% set | grep ^z_$a
z_x Test
% set | grep ^z_$a | awk '{print $1}'
z_x
这是唯一安全的方式,我可以想出做你想做的事。
关于shell - 变量的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604063/