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 09:01
下一篇 2016-08-12 09:01

相关推荐

  • 分区块基本知识点及侧重点 — 上

        我们需要熟练了解磁盘分区原理。元数据及块设备对应inode是最重要也是最基本的原理。后面分区很多地方都和inode有关系。    一个磁盘片有63扇区,1024存储位,256个磁头,每个扇区只有前512字节是有效存储单元。所以后面磁盘清零都是跟512这个数字有关。    数据分数据区和元数据…

    Linux干货 2016-08-24
  • 启动和内核管理2

    五、自制linux系统     分区并创建文件系统         fdisk /dev/sdb         分两个必要的分区   &n…

    Linux干货 2016-09-18
  • LVS类型及其调度算法

    LVS类型:     NAT:–>(DNAT) (多目标的DNAT)     DR:     TUN:     FULLNAT: LVS NAT的特性  &nbs…

    Linux干货 2016-10-29
  • Linux 目录结构

    1.    前言      Linux 是一种开源的,且非常流行的操作系统,发行版本众多。为了统一和规范linux系统的主要目录名及其用途,提出了FHS标准,FHS是File Hierarchy Standard的简写。Linux 目录结构采用FHS…

    Linux干货 2016-10-18
  • vim简单总结

    编辑器种类 常用的文本编辑器有: 行编辑器,如sed,awk,cut等 全屏编辑器,如vi,vim(vi增强版),nano等 vim的模式 命令模式:使用vim filename打开文件后,进入的第一个模式。 直接使用键盘操作文本的编辑 插入模式:INSERT模式 进入:i,从当前光标处开始 进入:I,从当前行行首开始 末行模式:vim内置命令接口。 以:开…

    Linux干货 2016-08-18
  • Linux用户和组管理及相关命令详解

        概要:在学习Linux的初级阶段,用户管理是基础管理的重要部分,任何命令的运行,系统的正常运转,均离不开用户管理的内容,本篇就为大家介绍下Linux用户管理的一些基础概念和一些基础命令的用法。内容主要分为以下三个部分:        &nbs…

    Linux干货 2016-08-02