我是靠谱客的博主 现代铅笔,最近开发中收集的这篇文章主要介绍Shell脚本中的if和case条件测试if语句结构case语句结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 条件测试
    • test命令
    • 整数值比较
    • 字符串比较
    • 逻辑测试
  • if语句结构
    • 单分支结构
    • 双分支结构
    • 多分支结构
  • case语句结构

条件测试

test命令

测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限读取(Write)
-x:测试当前用户是否有权限读取(eXcute)
在这里插入图片描述

test -f 1
echo $?
0                         --返回0表示条件成立 test -d 1
echo $?
1                         --返回1表示条件不成立
[ -f 1 ]
echo $?
0

在这里插入图片描述

&&:逻辑与,而且意思(做一个条件判断,前面条件成立,才会输出;不成立,就不输出)
||:或,一个条件成立即可
chmod +x 1
[ -x 1 ] && echo "yes"
yes
chmod -x 1
[ -x 1 ] && echo "yes"
[ -x 1 ] || echo "yes"
yes

整数值比较

[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
在这里插入图片描述

who | wc -l    条件判断先取值
3
[ $(who | wc -l) -lt 5 ] && echo "yes"
yes                             --用户数小于5               
[root@server2 ~]# [ $(who | wc -l) -lt 4 ] && echo "too many."

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

字符串比较

3种格式:
[ 字符串1 = 字符串2]
[ 字符串1 != 字符串2]
[ -z 字符串 ]
常用的测试操作符:
=:字符串内容相同
!=:字符串内容不同,!号表示取反
-z:字符串内容为空
在这里插入图片描述

[ '1' = '2' ]
 echo $?
1
[ '1' = '2' ]&& echo "1不等于2"
[ '1' != '2' ]&& echo "1不等于2"
1不等于2
[ -z ''] && echo "空的"
空的

在这里插入图片描述

[ $ack = "yes" ] && echo "覆盖"
覆盖
read -p "是否覆盖现有内容?(yes/no)" ack
是否覆盖现有内容?(yes/no)yes
[ $ack = "yes" ] && echo "覆盖"
覆盖
read -p "是否覆盖现有内容?(yes/no)" ack
是否覆盖现有内容?(yes/no)no
[ $ack = "no" ] && echo "不覆盖"
不覆盖

逻辑测试

格式:
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
常用的测试操作符:
-a或&&:逻辑与,而且的意思(第一个不成立后面就不会再看了)
-o或||:逻辑或,或者的意思(第一个成立就直接成立)
!:逻辑否,取反

if语句结构

单分支结构

if 条件测试操作
then 命令序列
fi
或者
if 条件测试操作;then
命令序列
fi
在这里插入图片描述

vi aa.sh
chmod +x aa.sh
./aa.sh
ls -R /a
cd /
ll

#!/bin/bash       查看目录是否存在,不存在就创建目录
# 创建目录
dir="/a/b"    做判断是否存在
if [ ! -d $dir ]  
then mkdir -p $dir
fi

双分支结构

if 条件测试操作
then 命令序列1
else 命令序列2
fi

#!/bin/bash
ping -c 3 -i 0.2 -w 3 $1 &> /dev/null
if [ $? -eq 0 ];then
  echo "主机$1存活"
else
  echo "主机$1宕机"
fi

多分支结构

if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
下图脚本实现需求:对用户输入的成绩进行划分,输入0-100分的整数,否则会提示“请重新输入0-100的整数”;85-100为优秀;70-84为良好,60-69合格,低于60不合格。
在这里插入图片描述

#!/bin/bash
# 成绩判断
read -p "您的成绩为:" grade
if [ $grade -gt 100 ] || [ $grade -lt 0 ]
then echo "输入错误,请重新输入0-100之间的数值"
elif [ $grade -ge 85 ] && [ $grade -le 100 ]
then echo "优秀!!!"
elif [ $grade -ge 70 ] && [ $grade -le 84 ]
then echo "良好!!!"
elif [ $grade -ge 60 ] && [ $grade -le 69 ]
then echo "合格!!!"
else echo "不合格!!!"
fi

case语句结构

case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
*)
默认命令序列
esac
在这里插入图片描述

#!/bin/bash
# 成绩输入判断
read -p "成绩:" b
case "$b" in
     100)
      echo "满分"
   ;;
   9[0-9])
      echo "优秀"
   ;;
  8[0-9])
      echo "良"
   ;;
  7[0-9])
      echo "良好"
   ;;
  6[0-9])
      echo "合格"
   ;;
   *)
      echo "不及格"
esac

最后

以上就是现代铅笔为你收集整理的Shell脚本中的if和case条件测试if语句结构case语句结构的全部内容,希望文章能够帮你解决Shell脚本中的if和case条件测试if语句结构case语句结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部