shell脚本——条件、if语句、case语句

一、条件测试

1、test命令

  • 测试表达式是否成立,若成立返回0,否则返回其他数值

格式1:test 条件表达式

格式2:[ 条件表达式 ]

在这里插入图片描述

2、文件测试

[ 操作符 文件或目录 ]

test 操作符  文件或目录
常用操作符说明
-e测试目录或文件是否存在(Exist)
-d测试是否为目录(Directory)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)

3、整数值比较

 [ 整数1 操作数 整数2 ]      
常用操作符说明另一种形式
-eq等于(Equal)==
-ne不等于(Not Equal)!=
-lt小于(Leser Than)<
-gt大于(Greater Than)>
-le小于或等于(Lesser or Equal)<=
-ge大于或等于(Greater or Equal)>=
操作符两边必须是整数————————操作符两边可以是整数也可以是字符串

4、字符串比较

格式1 [ 字符串1 = 字符串2 ]
          
            [ 字符串1 != 字符串2 ] 

格式2   [ -z 字符串 ]
常用操作符说明
=字符串内容相同
!=字符串内容不同,!号表示相反的意思
-z字符串内容为空
-n检查是否有字符串存在

5、逻辑测试


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

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

常用操作符说明
-a或&&逻辑与,而且的意思
-o或▕▕逻辑或,或者的意思
逻辑否
a=5
[ $a -ne 1 ] && [ $a != 2 ] 等同于 [ $a -ne 1 -a $a != 2 ]

[ -d 11 ] && [ -f 2.txt ] && echo "yes"
[ -d 11 -a -f 2.txt ] && echo "yes"
[[ -d 11 && -f 2.txt ]] && echo "yes"

a=6
[ $a -ne 5 ] && [ $a -gt 5 ] && echo "yes"
[ $a -ne 5 -a $a -gt 5] && echo "yes"
[[ $a -ne 5 && $a -gt 5 ]] $$ echo "yes"

[[ $a -ne 5  || $a -gt 5 ]] && echo "yes"
[$a -ne 5 ] || [ $a -gt 5 ] && echo "yes" 

二、if条件语句

1、单分支

    固定格式:                                 举例:
if     条件测试操作                       if 已用磁盘>80%
  then 命令序列                         then 报警   
fi  									fi


也可以用分号分隔放在一行写:if     条件测试操作; then 命令序列 ;fi

在这里插入图片描述


举例:判断/opt目录下是否有ky28.sh文件,没有的话就创建一个。

在这里插入图片描述


判断输入的内容是奇数还是偶数。

在这里插入图片描述

2、双分支

判断目标主机是否存活,显示检验结果

if 条件测试操作                   if 80端口是否在监听
   then                            then  
   命令序列 1                   网站服务已在运行  
   else                            else
   命令序列 2                       启动httpd服务
fi                              fi

在这里插入图片描述

举个例子:用if 语句判断主机是否存活
   ping -c 5

在这里插入图片描述
在这里插入图片描述


判断输入的内容是奇数还是偶数。

在这里插入图片描述

3、多分支

if 条件测试操作                if 分数85-100之间
   then                         then 
   命令序列1                      判为优秀
elif                         elif
条件测试操作2                     分数在70-84之间
   then                          then
   命令序列2                       判为合格
else                          else
命令序列3                      判为不合格
fi                            fi

在这里插入图片描述

在这里插入图片描述

三、case语句

1、case多分枝结构

case 变量值 in                               case分数in
模式一)                                      85~100)
   命令序列                                    判为优秀
   ;;                                          ;;
模式二)                                      70~84)
   命令序列                                    判为合格
   ;;                                          ;;
*)                                           *)
   默认命令序列                                判为不合格
esac                                        esac

在这里插入图片描述

2、case语句注意事项

  • case行首必须以单词“in”,每一模式必须以单个右括号")"结束
  • 双分号";;"表示命令序列的结束
  • 模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b最后的)表示默认模式,其中的相当于通配符

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值