shell编程 之 test命令

shell编程里的测试test命令基本可以分为3种数据类型,每种都不一样。个人更倾向于理解为条件语句的写法规则,就是test加条件加判断语句。

1 数值类型

    基本可以分为6个判断:-eq等于,-ne不等于,-gt大于,-lt小于,-ge大于等于,-le小于等于

    实例:a=1;b=2

               if test $[a] -eq $[b]    #如果a等于b,那就...,-ne,-gt,,等等都可以,另外提一句,要是不是一个算式的话,可以不加方括号,$a + $b

               then

                   echo "a=b"    #缩进4个4个都行,习惯性缩进4个

               else

                   echo "a!=b"

    ps:算式有两种写法:$[a + b]和`expr $a + $b`

2 字符串

    有4个判断:= ,!= , -z (长度为0)和-n(长度不为0)

    实例:astr='hehehehe' ; bstr='hahahaha'

            if test $astr = $bstr

            then

                echo "astr = bstr"

             else

                echo "astr !=bstr"

             fi

3 文件测试

    基本上有9个常用的参数,基本格式是test + 参数 +文件名,参数分别是:

        -e:exists,存在这样的一个文件;

        -r:readable,文件是可读的;

        -w:writable,文件的可写的;

        -x:文件是可执行的,

        -s:存在且不为空

        -d:directory,存在目录

        -f:file,存在且为普通文件,

        -c:文件存在而且为字符型的特殊文件    #这个地方怎么理解呢,可以和ls命令中最前面的一个字符相关联:‘-’表示文件。d则表示目录,l表示连接文件,b表示设备文件里面的可供存储的接口设备,c表示设备文件里面的串行端口设置。https://zhidao.baidu.com/question/1820545103813500748.htm  

          实例:

                cd /etc

                if test -f /etc/passwd        #此处可以结合与或非逻辑语句:形如 if test -e ./notFile -o -e ./bash 表示存在./notFile 或者./bash

                then 

                     echo "yes"

        else 

           echo "no"

        fi

 

 

                   

posted @ 2018-07-03 20:55  0点0度  阅读(665)  评论(0编辑  收藏  举报