shell-条件语句

一、条件测试:

1、文本测试与整数测试:
*命令——test:
测试表达式是否成立,若成立返回0,否则返回其他数值。

格式:test  条件表达式
     [ 条件表达式 ]

注意:在使用 [ *** ] 时中间的表达式前后要有空格,不然会报错!!!!

文本测试:

[ 操作符 文件或目录 ]
常用的测试操作符:
-d    测试是否为目录
-e    测试目录或文件是否存在
-f    测试是否为文件
-r    测试当前用户是否有权限读取
-w    测试当前用户是否有权限写入
-x    测试当前用户是否有权限执行

整数值比较:

[整数1 操作符 整数2]
-eq  等于
-ne  不等于
-gt  大于
-lt  小于
-le  小于或等于
-ge  大于或等于
常用的测试操作符:
[root@localhost ~]#who |wc -l
7
[root@localhost ~]#[$(who| wc -l)-gt 5] && echo "too many"
too many
[root@localhost ~]#[$(who| wc -l)-gt 10] && echo "> =10"
[ 55 -lt 88] && echo “yes”    >>yes
[  ‘zhangsan’ == ‘zhangsan’  ] && echo “yes”
数值比较用:-lt
字符比较用:==   里面的字符用单引号,后面的yes用双引号;
[root@localhost ~]#FreeCC=$(free -m | grep "Mem: " | awd'{print $6}')
[root@localhost ~]#[ $FreeCC -lt 1024 ] && echo $(FreeCC)MB
275MB

在引用完整的命令用 (反撇)或者$( )

Free -m :查看内存参数 mem:物理内存
Grep筛选横向
Awd 筛选纵向
在这里插入图片描述

2、条件测试操作:

1、字符串比较:
格式1:
【字符串1 = 字符串2】
【字符串1 != 字符串2】
常用的测试操作符:
=:字符串内容相同。
!=:字符串内容不同,!号表示相反的意思。
-z:字符串内容为空。
在这里插入图片描述
‘ ’ “ ”都可以添加字符串,但是双引号可以引用变量

2、条件测试操作:
逻辑测试:
格式1:【 表达式1 】 操作符 【 表达式2 】
格式2:命令1 操作符 命令2
常用的测试操作符:
-a或&&:逻辑 与,“而且”的意思。
-o或||:逻辑 或,“或者”的意思。
!=:逻辑否。

[root@localhost~]#[ -d /etc ] && [ -r /etc ] && echo " you can open it "
[root@localhost~]#[ -d /etc ] || [ -d /home ] && echo "ok"  

&&:前面的成立了才能够到后面运行
||:前面有一个成立就可以到后面运行
在这里插入图片描述
-a在中间不能够被识别,但是find -a 可以识别
在这里插入图片描述
[ ]里面只能够进行依次判断而不能够进行多次运算。

二、if语句的结构:

1、单分支结构:
在这里插入图片描述
2、双分支结构:

在这里插入图片描述

双分支if语句:
实例:判断目标主机是否存活,显示测试结果:
[root@localhost~]#cat pinghost.sh
#!/bin/bash
ping -c 3 -i 2 -w 3 $1 &> /dev/null      $1:是IP地址占位符
if[ $? -eq 0 ]
then
  echo "Host $1 is up"
else
  echo "Host $1 is down"
fi

3、多分枝if语句:
在这里插入图片描述

多分支if语句:
判断分数范围,分出优秀、合格、不合格三档
[root@localhost~]# cat gratediv.sh
#!/bin/bash
read -p "请输入您的分数(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ GRADE -le 100 ]
then 
  echo "$GRADE分,优秀!"
elif[ $GRADE -ge 70 ]&&[ $GRADE -le 84 ]
then 
   echo "$GRADE分,合格!"
else
   echo "$GRADE分,不合格!"
fi

4、case语句结构:
在这里插入图片描述
在这里插入图片描述

case多分支语句:

[root@localhost~]#cat hitkey.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认" KEY
case "$KEY"in 
[ a-z ]|[ A-Z ])
    echo "你输入的是字母!"
    ;;
[ 0-9 ])
   echo "你输入的是数字"
   ;;
*)
   echo "你输入的是 空格,功能键或者其他控制字符!"
esac
Echo $ [$RANDOM%10] : 0-9(取余10,10可以在除,故不包括10)
Echo $ [$RANDOM%10+1]:1-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值