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

相关推荐

  • 如何正确安装一个源码包

        下周就要考试了,心情挺忐忑不安的,前几天做了25期的考试题,感觉每个题都是老师上课讲过的,但是自己做却想不起来了。这应该就像学习数学一样,需要大量练习,做的多了自然就会了。     这周我们学习了如何使用yum,还学习了磁盘管理。针对如何安装源码包,以httpd包为例我们…

    2017-08-19
  • 马哥教育网络班22期+第8周课程练习

    week8: 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段, 或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。 它工作于OSI(开放系统互联参考模型)参考模型第二层,即“数据链路层”。 集线器的英文称为“H…

    Linux干货 2016-10-09
  • lvm 逻辑卷 和 网络管理

    lvm 逻辑卷 和 网络管理 逻辑卷管理器(LVM) LVM:      Logical Volume Manager, Version: 2  dm: device mapper:     将一个或多个底层块设备组织成一个 逻辑设备的模块   设备名:     /dev/d…

    Linux干货 2016-09-01
  • 网络及TCP

    为什么要使用分层网络模型     降低复杂性     标准化接口     简化模块化设计     确保技术的互操作性     加快发展速度  &nbs…

    2017-05-08
  • nginx

    http http协议:web服务器(类似于httpd)、http reverse proxy(类似于httpd)、imap/pop3 reverse proxy NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/P…

    Linux干货 2017-06-25
  • N22-℡浮生.若夢 ╮第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r /etc/skel/ /home/tuser1 ~]# chmod -R 700 /home/tuser1 ~]#&nbsp…

    Linux干货 2016-09-19