免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1950 | 回复: 2
打印 上一主题 下一主题

eval的用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-09 05:56 |只看该作者 |倒序浏览
eval typeset nsteps=\${#$step_array
  • } 为什么要用eval,而不是直接用typeset设置变量
  • 论坛徽章:
    0
    2 [报告]
    发表于 2007-11-09 07:55 |只看该作者
    原帖由 cetzhbo 于 2007-11-9 05:56 发表
    eval typeset nsteps=\${#$step_array
  • } 为什么要用eval,而不是直接用typeset设置变量


  • 你可以自己這樣測試:


    1. $ eval echo typeset nsteps=\${#$step_array}
    2. typeset nsteps=0

    3. $ echo typeset nsteps=\${#$step_array}
    4. typeset nsteps=${#}
    复制代码


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

    1. echo $myname
    复制代码
    或是
    1. echo ${myname}
    复制代码


    若你另外宣告 data=myname。


    1. $ echo $myname
    2. peter
    复制代码



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

    1. ${data} --> myname , ${myname} --> peter
    复制代码


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

    1. echo $${data}
    复制代码


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


    1. $ echo $${data}
    2. 14054{data}
    复制代码


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

    1. echo \$${data}
    复制代码


    但是這變成結果如下:


    1. $ echo \$${data}
    2. $myname
    复制代码


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

    1. eval echo \$${data}
    复制代码

    peter
    [/code]

    --

    [ 本帖最后由 kenduest 于 2007-11-9 07:59 编辑 ]

    论坛徽章:
    0
    3 [报告]
    发表于 2007-11-09 23:07 |只看该作者
    thank you very much. this is a real statement in our ETL loading script
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP