例如:
α= S1; B = S2;因为我在$ a $ b;回声$ i;完成
我想a and b
不s1 and s2
我怎么能这样做?
答案 0 :(得分:2)
如果您使用的是bash
或ksh
,则间接参数扩展比使用eval
更安全。
a=s1
b=s2
for i in a b; do
echo "$i=${!i}"
done
如果您使用zsh
,则语法略有不同。
for i in a b; do
echo "$i=${(P)i}"
done
其他shell可能有不同的语法;查看其文档以获取详细信息。
如果您使用shell(例如/bin/sh
或dash
)而没有间接参数展开,则必须使用eval
:
for i in a b; do
eval "echo $i=\$$i"
done
此处eval
是安全的,因为您可以明确控制i
的值。通常,应验证在eval
参数中展开的任何参数,以确保您不会执行您不期望的代码。
答案 1 :(得分:0)
我明白了!
α= S1; B = S2;我在\ $ a \ $ b;回声$ i;完成
这将获得a
和b
如果您还想使用该值,请尝试以下操作:
α= S1; B = S2;我在\ $ a \ $ b;做eval“echo $ i”;完成
这将获得s1
和s2