2015-08-08 46 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

相關問題