shell中条件测试常用的语法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中条件测试常用的语法相关的知识,希望对你有一定的参考价值。

shell中条件测试常用的语法(一)


  1. 执行条件测试表达式后通常会返回“真”或“假”,就像执行命令后的返回值为0表示真,非0表示假一样。在bash编程里,条件测试常用的语法形式如下:

    技术分享

    说明:

    (1)语法1与语法2是等价的,语法3是语法1的扩展;

    (2)语法4常用于计算;

    (3)在[[]](双中括号)中可以使用通配符等进行模式匹配,这是区别其他几种语法格式的地方;

    (4)&&,||,>,<等操作符可以应用于[[]]中,在[]中一般用-a,-o,-gt(用于整数),-lt(用于整数),!= 代替上述操作符;

    (5)对于整数的关系运算,也可以使用shell的算数运算符(())。

    建议:工作中使用语法2!

  2. 常用的文件测试操作符

    技术分享

    举个特殊例子:

    [[email protected] ~]# touch wtf

    [[email protected] ~]# ll wtf

    -rw-r--r-- 1 root root 0 10月 23 03:25 wtf

    [[email protected] ~]# chmod 001 wtf

    [[email protected] ~]# ll wtf

    ---------x 1 root root 0 10月 23 03:25 wtf

    [[email protected] ~]# [ -r wtf ] && echo 1 || echo 0

    1

    [[email protected] ~]# [ -w wtf ] && echo 1 || echo 0

    1

    [[email protected] ~]# [ -x wtf ] && echo 1 || echo 0

    1

    说明:wtf这个普通文件没有可读可写的权限,为什么还会返回1呢?这是因为我们使用的是root账户的原因!所以,我们在测试一个文件的读,写,执行等属性,不光是根据文件属性rwx的标识来判断,还要看当前执行测试的用户是否真的可以按照对应的权限操作该文件。

  3. 变量的特殊写法和问题

    [[email protected] ~]# echo $wtf


    [[email protected] ~]# [ -e $wtf ] && echo 1 || echo 0

    1

    [[email protected] ~]# [ -e "$wtf" ] && echo 1 || echo 0

    0

    说明:变量wtf是不存在的,但[ -e $wtf ]直接判断时,返回值是1,这与逻辑不符合,所以这个时候变量wtf要加上双引号"$wtf"。

    对于文件加不加引号结构都是一样的,如:

    [[email protected] ~]# cd /tmp

    [[email protected] tmp]# ls

    tmp0F7ZGn  tmpcywyqY  tmpEAwY35  tmpinHrdN  tmpwk_xzo  yum.log

    [[email protected] tmp]# [ -e /tmp/wutengfei ] && echo 1 || echo 0

    0

    [[email protected] tmp]# [ -e "/tmp/wutengfei" ] && echo 1 || echo 0

    0

本文出自 “圣骑士控魔之手” 博客,请务必保留此出处http://wutengfei.blog.51cto.com/10942117/1975410

以上是关于shell中条件测试常用的语法的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本的条件测试与比较

Shell编程-05-Shell中条件测试与比较

第四章Shell 条件测试表达式

shell中条件判断文件, 判断数值, 判断字符; 逻辑比较, test的使用

关于Shell脚本中条件表达式

Shell编程学习