- 论坛徽章:
- 0
|
原帖由 cetzhbo 于 2007-11-9 05:56 发表 ![]()
eval typeset nsteps=\${#$step_array} 为什么要用eval,而不是直接用typeset设置变量
你可以自己這樣測試:
- $ eval echo typeset nsteps=\${#$step_array}
- typeset nsteps=0
- $ echo typeset nsteps=\${#$step_array}
- typeset nsteps=${#}
复制代码
若你還是看不懂的話,可以另外解釋。比方你宣告 myname=peter,然後你要查看 myname 變量內容就是使用:
或是
若你另外宣告 data=myname。
若是希望可以把 data 變量的內容 "myname" 當作一個新變量提供取出 peter 內容的話,一般概念:
- ${data} --> myname , ${myname} --> peter
复制代码
所以語法上要查看內容一般可能會使用:
只是這樣語法是錯誤的,因為無法取出 ${data} 內容後再當作變量取值。
- $ echo $${data}
- 14054{data}
复制代码
那可能想到方式是這樣使用:
但是這變成結果如下:
那怎麼把 $myname 展開執行呢 ? 那就是使用 eval 來解決該問題:
peter
[/code]
--
[ 本帖最后由 kenduest 于 2007-11-9 07:59 编辑 ] |
|