码迷,mamicode.com
首页 > 其他好文 > 详细

eval命令.单中括号[]和双中括号[[]]

时间:2016-07-03 23:37:02      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:eval命令.单中括号[]和双中括号[[]]

一.eval命令

    语法:eval cmdLine

    eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。

例如:

        为了输出最后一个参数有如下程序:

    技术分享

    技术分享

其中echo $4是在知道总共有4个数的情况下,直接输出第4个;当不知道总共有多少个数的情况下尝试使用echo "\$$#"输出最后一个数,结果并没有达到想要的结果;而 eval echo "\$$#"在不知道总数的情况下就能找到最后一个数。


二.单中括号[]和双中括号[[]]

(1)单中括号[]

    1.[]用于条件测试,是一个命令,]用于关闭条件判断,这个命令把它的参数作为比较表达式或者文件参数,并且根据比较的结果来返回一个退出状态码。如果为真则退出码为0,为假则退出码为1。

    []中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不能用于整数比较。整数比较只能使用-gt(大于).-lt(小于).-eq(等于).-ge(大于等于).-le(小于等于)来进行比较。

    当比较字符串时,注意给比较运算符两边加上相同的字符,这样的话,当输入为空的时候也可以进行比较。同时,[和]与中间的表达式必须有空格,比较运算符与表达式也最好加上空格。程序如下:


    技术分享

    执行结果:

    技术分享

2.[]可用作正则表达式的一部分,描述一个匹配的字符范围;

3.在一个array结构的上下文中,[]用来引用数组中每个元素的编号。

(2)双中括号[[]]

    1.[[]]不是命令,是关键字。[[]]比[]结构更加通用,在[[和]]之间的所有字符都不会发生文件名扩展或是单词分割,但是会发生参数扩展或是命令替换。

    2.使用[[]]条件判断结构,能够防止脚本中的许多逻辑错误。比如,&&,||,<和>操作符能够正常存在于[[]]条件判断结构中([[]]中不支持">="和"<="),如果出现在[]中会报错(在[]中想要进行与,或的判断的时候,需要用到-a(与)和-o(或)来进行连接)。

    程序如下:

    技术分享

    执行结果:

    技术分享

  



本文出自 “zwy” 博客,请务必保留此出处http://10548195.blog.51cto.com/10538195/1795398

eval命令.单中括号[]和双中括号[[]]

标签:eval命令.单中括号[]和双中括号[[]]

原文地址:http://10548195.blog.51cto.com/10538195/1795398

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!