阅读 146

shell 脚本之条件测试

Shell 编程之条件语句

目录

一 ,条件测试



1.1 文件测试与整数测试

1.1.1 test 命令

测试表达式是否成立,若成立,则返回0,否则返回其他数值(返回值使用 echo $? 查看)

格式1: test 条件表达式

格式2: [ 条件表达式 ] *#条件表达式与中括号两边至少各有一个空格



1.1.2 文件测试

[ 操作符 文件或目录 ]

注意: 中括号两边要有空格

文件运算符 释义 示例
-e filename 如果filename 存在,则为真 [ -e /etc/passwd]
-f filename 如果filename 存在,且为目录,则为真 [ -d /opt ]
-d filename 如果filename 存在 ,且为文件,则为真 [ -f /etc/passwd ]
-L filename 如果fiename 存在,且为软连接,则为真 [ -L /bin ]
-r filename 如果filename存在,且当前用户可读,则为真 [ -r /etc/passwd ]
-w filename 如果filename存在,且当前用户可写,则为真 [ -w /etc/passwd ]
-x filename 如果filename 存在,且当前用户可执行,则为真 [ -x /usr/bin/umake ]
-s filename 如果filename存在,且不为空文件,则为真 [ -s /etc/passwd ]
-S filename 如果filename 存在,且为空,则为真 [ -S /etc/passwd ]
filename1 -nt filename2 如果 filename 1 比 filename 2 新,则为真 [ /etc/passwd -nt /etc/group ]
filename1 -ot filename2 如果 filename1 比 filename2 旧, 则为真 [ /etc/passwd -ot /etc/group ]





1.1.3 整数值比较

[ 整数1 操作符 整数2 ]

测试符 释义
-eq 等于(Equal)
-ne 不等于(Not Equal)
-gt 大于(Greater Than)
-lt 小于(Lesser Than)
-le 小于或等于(Lesser or Equal)
-ge 大于或等于(Greater or Equal)



1.2 字符串测试与逻辑测试



1.2.1 字符串比较

格式1: [ 字符串1 = 字符串2 ] #字符串一样为真

? [ 字符串1 != 字符串2 ] #字符串不一样为真

格式2:[ -z 字符串 ] #字符串为空,则为真

? [ -n 字符串 ] #字符串不为空,则为真

操作符 释义
= 测试字符串是否一样,一样为真
!= 测试字符串是否不一样,不一样为真
-z 测试字符串是否为空,为空则为真
-n 测试字符串是否不为空,不为空则为真
[root@host103 test]# a=abc
[root@host103 test]# b=def
[root@host103 test]# c=""
[root@host103 test]# [ $a = $b ]
[root@host103 test]# echo $?
1
[root@host103 test]# [ $a != $b ]
[root@host103 test]# echo $?
0
[root@host103 test]# [ -z $a ]
[root@host103 test]# echo $?
1
[root@host103 test]# [ -n $a ]
[root@host103 test]# echo $?
0
[root@host103 test]# 



1.2.2 逻辑测试

格式: [ 表达式1 ] 操作符 [ 表达式2 ] ....

格式2: 命令1 操作符 命令2

操作符 释义
-a 或者 && 逻辑与,“而且”的意思
-o 或者 || 逻辑或,“或者” 的意思
逻辑否(逻辑非)

&& ,逻辑与,前面的条件都执行成功,才只执行后面的



|| ,逻辑或,多个条件任意一个成功即可执行后面的



二,if语句



2.1 if 单分支语句

格式:

if  条件测试
  then   命令序列
fi

[root@host103 ~]# vim abc.sh
#!/bin/bash
read -p "input hi: " args
if [ $args == hi ];then      #如果输入的字符为“hi ”
    echo "hello"             #则打印“hello”
fi
:wq



2.2 if 多分支语句

格式:

if  条件判断
    then   命令序列1
    else   命令序列2
fi

[root@host103 ~]# vim abc.sh
#!/bin/bash
read -p "input hi: " args
if [ $args == hi ];then
    echo "hello"
else
    echo "please input hi"
fi
:wq   



2.3 if 多分支语句

格式:

if 条件测试
   then 命令序列1
elif  条件测试2
   then  命令序列2
elif  条件测试3
    then 命令序列3
  ......
else
   命令序列4
fi

[root@host103 ~]# vim abc.sh
#!/bin/bash
read -p "input your score :" num
if [ $num -ge 90 ];then
    echo "great"
elif [ $num -ge 80 ] ;then
    echo "good"
elif [ $num -ge 70 ] ;then
    echo "not bad"
elif [ $num -ge 60 ] ;then
    echo "pass"
else
    echo "fail"
fi
:wq



三,case语句

case 可以用来判断一个变量的不同取值

格式:

case  $变量  in
值1)
	命令序列1 ;;
值2)
  命令序列2 ;;
*)
  命令序列3 ;;
esac
  

[root@host103 ~]# vim test.sh
#!/bin/bash
read -p "Do you want to know the meaning of life: " args
case $args in
yes)
    echo "you choise yes" ;;
no)
    echo "you choise no" ;;
*)                                         #case 值没有匹配,则执行此项
    echo "please input /yes/no";;
esac

原文:https://www.cnblogs.com/zhijiyiyu/p/14999448.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐