2015-08-08 53 views
0

值例如:如何显示变量名本身,而不是在外壳

一个= S1; B = S2;因为我在$ a $ b;做echo $ i;做

我想a and bs1 and s2

我怎么能做到这一点?

+0

只有a和b的值已经输入到$ i。该回声命令不会意识到它们。然而,通过其他方式获得价值在技术上是可行的,也许这个其他堆栈交换帖子将有助于:http://unix.stackexchange.com/questions/129084/in-bash-how-can-i-echo-the-变量名称不可变值 – Gene

+0

这是干什么用的?这可能是你被困在别人已经解决的问题的一步,但以一种不同的方式 –

回答

2

,间接参数扩展比使用eval安全。如果您使用zsh,则语法稍有不同。

for i in a b; do 
    echo "$i=${(P)i}" 
done 

其他shell可能有不同的语法;查看其文档以获取详细信息

如果你使用没有间接参数扩展外壳(例如/bin/shdash),你将不得不使用eval

for i in a b; do 
    eval "echo $i=\$$i" 
done 

这里,eval是安全的,因为在你的价值有明确的控制i。通常,参数eval中扩展的任何参数都应该进行验证,以确保您不会执行您不期望的代码。

0

我明白了!

a = s1; b = s2;我在\ $ a \ $ b;做echo $ i;做

这将让ab

如果你也想用价值,试试这个:

A = S1; B = S2;我在\ $ a \ $ b;做eval“echo $ i”;做

如果您正在使用bashksh这将让s1s2

相关问题