Shell编程条件语句:if与case语句

test命令

  • 测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2[ 条件表达式 ]

文件测试

[ 操作符 文件或目录 ]

常用的测试操作符

  • -d:测试是否为目录
  • -e:测试目录或文件是否存在
  • -f:测试是否为文件
  • -r:测试当前用户是否有权限读取
  • -w:测试当前用户是否有权限写入
  • -x:测试当前用户是否有权限执行
[root@localhost ~]#[-d lmedialcdrom ]
[root@localhost ~]# echo $? //返回0表示条件成立
0
[root@localhost ~]# [ -d lmedialcdrom/Server ]
[root@localhost ~]# echo $? //返回1表示条件不成立
1
[root@localhost ~]#[-d lmedialcdrpm ] && echo "YES" //逻辑与,“而且”的意思
YES

整数值比较

[ 整数 操作符 整数2 ]

常用的测试操作符

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -le:小于或等于
  • -ge:大于等于
[root@localhost ~]# who | wc -l
7
[root@localhost ~]# [ $(who | wc -l) -gt 5 | && echo "Too many." //用户数是否>5
Too many.
[root@localhost ~]#[$(who | wc -l) -ge 10 | && echo ">= 10. //用户数是否>=10
[root@localhost ~]# FreecC=$(free -m | grep "Mem: ' | awk "{
    
    print $6y}')
[root@localhost ~]#[$FreecC -lt 1024]&& echo ${
    
    FreecC}MB //空闲内存是否<1024MB
275MB

字符串比较

  • 格式1
格式1[ 字符串1 = 字符串2 ]
      [ 字符串1= 字符串2 ]
格式2[ -z 字符串 ]

常用的测试操作符

  • =:字符串内容相同
  • !=:字符串内容不同,!号表示相反的意思
  • -z:字符串内容为空
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# [ $LANG!="en.US" ] &&echo “Not en.US"
Not en.US

逻辑测试

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

常用的测试操作符

  • -a或&&:逻辑与,“而且”的意思
  • -c或||:逻辑或,“或者”的意思
  • !:逻辑否
[root@localhost ~]#[-d letc ] &&[-r letc ] &&echo "You can open it"
[root@localhost ~]#【-d letc ] [ -d home ] &&echo "ok"

单分支结构

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

双分支结构

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

多分支结构

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

  • 判断分数范围,分出优秀、合格、不合格三挡’
[root@localhost ~]# cat gradedlv.sh
read -p"请输入您的分数(O-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

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

猜你喜欢

转载自blog.csdn.net/weixin_49343462/article/details/109496739