linux--shell Test

shell脚本测试

即为脚本状态判断

退出与测试

在linux中,每个命令或者脚本完成后都会有一个退出状态:
在shell中有一个内部命令test命令用于判断语句进行测试一种或者几种状态条件是否成立
#退出状态,测试和判断密切相关

退出状态

当命令执行成功后,系统会返回一个退出状态,这个状态由数值表示,判断命令是否正确执行,若退出状态为0,表示命令执行成功,若为其他数值,则表示运行失败

查看状态码用 $?

    状态码        含义
    0            代表运行成功,程序执行ok
    1-125        代表执行失败,脚本,命令,系统命令或传递参数失败
    126            找到了命令但无法执行
    127            没找到命令
    >128        命令被系统强制结束
    
    ex:
        ls;echo $?

测试结构

测试命令用于测试表达式的条件的真假,如果条件为真,则返回0;如果条件为假,则返回一个非0数值

#测试结构语法
第一种:
    test expression
    expression为表达式,该表达式可以是数字,字符串,文本,文件属性的比较

第二种:
    [ expression ]
        expression为表达式
        [ 代表测试启动
        表达式与[]俩边必须有空格,
        这种方法经常与if,Case,while等语句连用

运算符

整数比较运算符

主要用于俩个值的比较,比较简答

#测试结构
    test 'num'  整数比较运算符  ‘num’
    或:
    [ ‘num’ 整数比较运算符 ‘num’ ]


#常用运算符
    num1 -eq num2        如果num1等于nunm2,测试结果为0
    num1 -ge num2        如果num1大于等于num2,测试结果为0
    num1 -gt num2        如果num1大于num2,测试结果为0
    num1 -le num2        如果num1小于等于num2,测试结果为0
    num1 -lt num2        如果num1小于num2,测试结果为0
    num1 -ne num2        如果num1不等于num2,测试结果为0


#一个整数与一个整数常量的比较
    [root@localhost ~]# num=15
    [root@localhost ~]# [ "$num" -eq 15 ];echo $?
    0
    [root@localhost ~]# [ "$num" -gt 10 ];echo $?
    0
    [root@localhost ~]# [ "$num" -gt 20 ];echo $?
    1
    [root@localhost ~]# [ "$num" -lt 15 ];echo $?
    1


#俩个变量作比较
    [root@localhost ~]# first_num=99
    [root@localhost ~]# second_num=100
    [root@localhost ~]# [ "$first_num" -gt "$second_num" ];echo $?
    1
    [root@localhost ~]# [ "$first_num" -lt "$second_num" ];echo $?
    0
    [root@localhost ~]# 


#注意:整数比较运算符不适用与浮点型数值比较,这一点与C语言区别
    [root@localhost ~]# [ 1.5 -lt 2.2 ];echo $?
    -bash: [: 1.5: integer expression expected
    2

字符串运算符

字符串运算符可以用来测试字符串是否为空,俩个字符串是否想等或者不相等,主要用来测试用户用户输入是否为空或者判断计较字符串变量;

字符串运算符总共有5种
#注意
    字符串运算符只能使用test,不能使用[]这种格式
    俩个字符串进行比较时,变量也用双引号引起来,变量为空也得用双引号

    string        测试字符串是否不为空
    -n    string        测试字符串是否不为空(为空等于长度为0)
    -z    string        测试字符串string是否为空
    string1=string2    测试字符串是否相等
    string!=string2    测试字符串是否不相等

        [root@localhost Desktop]# str1="";test "$str1";echo $?
        1
        [root@localhost Desktop]# str1="7";test "$str1";echo $?
        0
        [root@localhost Desktop]# test -n "$str1";echo $?
        0
        [root@localhost Desktop]# test -z "$str1";echo $?
        1


        [root@localhost Desktop]# str1="vi"
        [root@localhost Desktop]# str2="vim"
        [root@localhost Desktop]# [ "$str1" = "$str2" ];echo $?
        1
        [root@localhost Desktop]# [ "$str1" != "$str2" ];echo $?
        0


        [root@localhost Desktop]# str="hello "
        [root@localhost Desktop]# [ "$str" = "hello" ];echo $?
        1
        [root@localhost Desktop]# str="hello"
        [root@localhost Desktop]# [ "$str" = "HELLO" ];echo $?
        1


        num="007"        #给变量赋值,可以当作整数,也可以当作字符串
        [ "$num" -eq "7" ];echo $?        #测试变量num是否等于整数7
        [ "$num" = "7" ];echo $?    #测试变量num的值是否等于字符串7  

文件操作符

可以完成测试文件的各种操作
格式:
    test file_operator file
    或:
    [ file_operator file ]

#常用的文件操作符

    -d    file        #测试file是否是目录
    -e    file        #测试file是否存在
    -f    file        #测试file是否是普通文件
    -r    file        #测试file是否可读
    -s    file        #测试file是否不为空
    -w    file        #测试file是否可写
    -x    file        #测试file是否是可执行文件
    -h    file        #测试file是否是链接文件



    [root@localhost ~]# [ -e xasxa ] && echo  "Y"  || echo "N"  && echo $?
    N
    0

    [root@localhost ~]# [ -f /etc/passwd ] && echo  "Y"  || echo "N"
    Y
    [root@localhost ~]# [ -f /etc/passwds ] && echo  "Y"  || echo "N"
    N

    [root@localhost ~]# test -d /etc/ && echo "Y" ||  echo "N"
    Y

逻辑运算符

逻辑运算符用于测试多个条件是否为真为假,或使用逻辑非运算测试单个表达式

逻辑非,逻辑与,逻辑或

    !    expression      #如果expression,整个测试结果为真
    expression1 -a  expression2     #同时为真则为真
    expression  -o    expression2        #有真则真


[root@localhost ~]# [ -e initial-setup-ks.cfg ];echo $?
0
[root@localhost ~]# [ !  -e initial-setup-ks.cfg ];echo $?
1
[root@localhost ~]# [ -e initial-setup-ks.cfg -a -x anaconda-ks.cfg ];echo $?
1
[root@localhost ~]# 

[root@localhost ~]# num=15
[root@localhost ~]# [ "$num" -lt 20 -o "$num" -gt 30 ];echo $?
0
[root@localhost ~]# 

引号

\:表转义,显示原内容;或表换行
'':单引号或双引号表屏蔽元字符串  ` $ \  的含义
"":与单引号略有不同,不会屏蔽 ` $ \ 这3个元字符的含义
``:反引号主要进行命令替换
    [root@localhost ~]# echo * 打印当前目录下文件
    anaconda-ks.cfg
    
    [root@localhost ~]# echo "Today is `date +%D`"
    Today is 08/31/19
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值