bash-条件测试

                 条件测试

1.条件测试 

         判断某需求是否满足,需要由测试机制来实现;

        专用的测试表达式需要由测试命令辅助完成测试过程;

             评估布尔声明,以便用在条件性执行中

            • 若真,则返回0

            • 若假,则返回1

2.测试命令:

        • test EXPRESSION

        • [ EXPRESSION ]

        • [[ EXPRESSION ]]

        注意: EXPRESSION前后必须有空白字符

3.条件性的执行操作符

         根据退出状态而定,命令可以有条件地运行

            • && 代表条件性的 AND THEN

            • || 代表条件性的 OR ELSE

         例如:

        $ grep -q no_such_user /etc/passwd || echo 'No such user' No such user

        $ ping -c1 -W2 station1 &> /dev/null && echo "station1 is up" \

             > || (echo 'station1 is unreachable'; exit 1)

            station1 is up

    若ping -c1 -W2 station1执行成功,则echo "station1 is up",否则echo 'station1 is unreachable'; exit 


4.test命令

         长格式的例子:

            $ test "$A" == "$B" && echo "Strings are equal"

            $ test “$A” -eq “$B”&& echo "Integers are equal"

         简写格式的例子:

            $ [ "$A" == "$B" ] && echo "Strings are equal"

            $ [ "$A" -eq "$B" ] && echo "Integers are equal"

5.bash的测试类型

         数值测试:(注意前面有“-”)

            gt: 是否大于;             greater than

            -ge: 是否大于等于;      greater equal

            -eq: 是否等于; equal

            -ne: 是否不等于; not equal

            -lt: 是否小于; less than

            -le: 是否小于等于; less equal

            eg:   [ "$A" -eq "$B" ]

         字符串测试:

            ==:是否等于;

            >: ascii码是否大于ascii码

            <: 是否小于

            !=: 是否不等于

            =~: 左侧字符串是否能够被右侧的PATTERN所匹配

            注意: 此表达式一般用于[[ ]]中;

            -z "STRING":字符串是否为空,空为真,不空为假

            -n "STRING":字符串是否不空,不空为真,空为假

            注意:用于字符串比较时的用到的操作数都应该使用引号

        文件测试

             存在性测试

                -a FILE:同-e

                -e FILE: 文件存在性测试,存在为真,否则为假;

             存在性及类别测试

                -b FILE:是否存在且为块设备文件;

                -c FILE:是否存在且为字符设备文件;

                -d FILE:是否存在且为目录文件;

                -f FILE:是否存在且为普通文件;

                -h FILE 或 -L FILE:存在且为符号链接文件;

                -p FILE:是否存在且为命名管道文件;

                -S FILE:是否存在且为套接字文件;

             文件权限测试:

                -r FILE:是否存在且可读

                -w FILE: 是否存在且可写

                -x FILE: 是否存在且可执行

             文件特殊权限测试:

                -g FILE:是否存在且拥有sgid权限;

                -u FILE:是否存在且拥有suid权限;

                -k FILE:是否存在且拥有sticky权限;

             文件大小测试:

                -s FILE: 是否存在且非空;

             文件是否打开:

                -t fd: fd表示文件描述符是否已经打开且与某终端相关

                -N FILE:文件自动上一次被读取之后是否被修改过

                -O FILE:当前有效用户是否为文件属主

                -G FILE:当前有效用户是否为文件属组

6.双目测试:

        FILE1 -ef FILE2: FILE1与FILE2是否指向同一个设备上的相同inode

        FILE1 -nt FILE2: FILE1是否新于FILE2;

        FILE1 -ot FILE2: FILE1是否旧于FILE2;

7.组合测试条件

         第一种方式:

            COMMAND1 && COMMAND2 并且

            COMMAND1 || COMMAND2 或者

            ! COMMAND 非

            如: [ -e FILE ] && [ -r FILE ]

         第二种方式:

            EXPRESSION1 -a EXPRESSION2 并且

            EXPRESSION1 -o EXPRESSION2 或者

            ! EXPRESSION  非

            (使用单括号)

        必须使用测试命令进行

        [ -z “$HOSTNAME” -o  ”$HOSTNAME " == "localhost.localdomain" ] && hostname www.magedu.com

         [ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab

        

原创文章,作者:ldt195175108,如若转载,请注明出处:http://www.178linux.com/33706

(0)
ldt195175108ldt195175108
上一篇 2016-08-12
下一篇 2016-08-12

相关推荐

  • 马哥教育网络第21期-第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。   网桥从一个局域网接收MAC帧,拆封、校对、校验之后,按另一个局域网的格式重新组装,发往它的物理层。由于网桥是链路层设备,因此不处理数据链路层以上层次协议所加的报头。   集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点…

    Linux干货 2016-10-24
  • 查找帮助功能、Linux文件系统目录标准LHS介绍

    查找帮助 命令自带   COMMAND –help                      COMMAND -h 使用手册 man COMMAND…

    Linux干货 2016-10-30
  • 通过view实现智能DNS

    DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址,然后跟DNS服务器内部的IP表匹配一下,看看用户的类型,然后给用户返回对应的IP地址。

    Linux干货 2017-10-03
  • LVM详解

    Linux的LVM详解 LVM组成; LVM:logic volume manager .LVM即逻辑卷管理,现在使用版本为第二版,即version2 逻辑卷:pv,physical volume,即计算机上的磁盘设备,例如我的计算机上的/dev/sda3,/dev/sda5. 卷组:vg,volume group。一般由多个pv组成。 逻辑卷:lv,log…

    Linux干货 2016-02-14
  • Linux 入门基础 及一些常见命令(上)

    计算机的组成及其各部分的功能 现代计算机的基本结构是由匈牙利-美国科学家冯· 诺依曼于1946年提出的。迄今为止所有进入实用的电子计算机  都是按冯· 诺依曼提出的结构体系和工作原理设计制造的,故又统称为“冯·诺依曼型计算机". 根据冯.诺依曼原理:计算机由运算器、控制器、存储器、输入设备、输出设备所组成. 运算器: 进行算术与逻辑运算.…

    Linux干货 2016-09-17
  • 根据作业浅析正则表达式

        什么是正则?正则就是,那种体现出某种规律的不变性或者对称性的物理量或关系。     正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能(linux中,可以使用:man …

    Linux干货 2017-07-30