Chinaunix首页 | 论坛 | 博客
  • 博客访问: 226878
  • 博文数量: 17
  • 博客积分: 3130
  • 博客等级: 中校
  • 技术积分: 1630
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-05 16:26
个人简介

戒贪、戒嗔、戒痴

文章分类

全部博文(17)

文章存档

2013年(9)

2009年(6)

2008年(2)

我的朋友

分类: LINUX

2009-10-27 09:58:29

 

eval typeset nsteps=\${#$step_array

  • } 为什么要用eval,而不是直接用typeset设置变量

你可以自己這樣測試:

[Copy to clipboard] [ - ]

CODE:

$ eval echo typeset nsteps=\${#$step_array}

typeset nsteps=0

$ echo typeset nsteps=\${#$step_array}

typeset nsteps=${#}

若你還是看不懂的話,可以另外解釋。比方你宣告 myname=peter,然後你要查看 myname 變量內容就是使用:

[Copy to clipboard] [ - ]

CODE:

echo $myname

或是

[Copy to clipboard] [ - ]

CODE:

echo ${myname}

若你另外宣告 data=myname。

[Copy to clipboard] [ - ]

CODE:

$ echo $myname

peter

若是希望可以把 data 變量的內容 "myname" 當作一個新變量提供取出 peter 內容的話,一般概念:

[Copy to clipboard] [ - ]

CODE:

${data} --> myname , ${myname} --> peter

所以語法上要查看內容一般可能會使用:

[Copy to clipboard] [ - ]

CODE:

echo $${data}

只是這樣語法是錯誤的,因為無法取出 ${data} 內容後再當作變量取值。

[Copy to clipboard] [ - ]

CODE:

$ echo $${data}

14054{data}

那可能想到方式是這樣使用:

[Copy to clipboard] [ - ]

CODE:

echo \$${data}

但是這變成結果如下:

[Copy to clipboard] [ - ]

CODE:

$ echo \$${data}

$myname

那怎麼把 $myname 展開執行呢 ? 那就是使用 eval 來解決該問題:

[Copy to clipboard] [ - ]

CODE:

eval echo \$${data}

peter

 

阅读(456) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~