shell第二章——编程之条件语句

文章详细介绍了Shell编程中的条件语句,包括test命令用于文件和整数值的比较,以及if语句的单分支、双分支和多分支结构。同时,提到了case语句的多分枝结构和其与if语句的区别,case在条件不满足时会自动检查下一个条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条件测试

test命令

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

格式:test 条件表达式
格式:【条件表达式】

  • 文件测试

[操作符 文件或目录]

  • 常用的测试操作符
  • -d:测试是否为目录(Directory)
  • -e:测试目录或者文件是否存在(exist)
  • -f:测试是否为文件(File)
  • -r:测试当前用户是否由权限读取(read)
  • -w:测试当前用户是否由权限写入(write)
  • -x:测试当前用户是否由权限执行(excute)

在这里插入图片描述

整数值比较

[整数变量1 操作符 整数变量2]
常用的测试操作符
-eq:等于 ==
-ne:不等于 !=
-gt:大于 >
-lt:小于 <
-le:小于等于 >=
-ge:大于等于 =<

逻辑测试

自定义变量 read -p “ 提示信息” 变量名

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

常用的测试操作符

  • a或&&:逻辑与,“而且”的意思
  • -o或|| :逻辑或,’或者‘的意思
  • !:逻辑否

在这里插入图片描述

if语句的结构

单分支结构

在这里插入图片描述
实验
vim /ming.sh (随便创建并且编辑一个文件,但必须是sh结尾的)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

双分支结构

在这里插入图片描述
在这里插入图片描述
实验:用if脚本检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限

vim test.sh                                 #创建并编辑test.sh
#!/bin/bash                                #脚本解释器              
fi [ -e /root/test.sh ]                     #输入if条件,-e代表测试文件是否存在
    then                                    #then代表然后,符合if条件的才可
     if [ -x /root/text.sh ]                #这边是嵌入if,在if循环中又嵌入一个if-x测试文件权限是否可以执行
     then echo "文件存在,有权限“              #若文件权限可执行,则输出文件存在,有权限
     then else ”文件存在,无权限“              #若文件权限不可执行,则输出文件存在,不可执行
     fi                                     #这个嵌入if的结束用fi结束
  else ”文件不存在“                          #这个是我们初始if的不符合条件的项,不符合,则直接输出文件不存在,无需去检测权限
fi                                          #检测结束

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

多分枝结构

在这里插入图片描述
在这里插入图片描述
实验1实验内容是一张0-100分的卷子,在各分段所给的分数评价
vim zs.sh进入文件

在这里插入图片描述
在这里插入图片描述
实验2:提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,
如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,
男生进男生组,女生进女生组,如果输入错误请提示错误

read -p "请输入你的成绩:" num
if [ $num -gt 0 ] && [ $num -le 10 ]
then
   read -p "请输入性别:" sex
    if [ $sex == "男" ]
    then echo "男生组"
     elif [ $sex == "女" ]
     then echo "女生组"
     else echo "不男不女"
    fi
else
echo "淘汰"
fi


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

case语句

case多分枝结构

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

实验
一张百分卷子,给个分段的学生打个评价

vim a.sh                   #创建一个.sh结尾文件,并且进入编辑
read -p "输入成绩:" s       #输入自变量
[[ $s -ge 85  &&  $s -le 100 ]]  && s=great      #双中括号内可以直接打且的&&符号, s=great 为给学生的评价,下面一样
[[ $s -ge 70  &&  $s -le 84 ]]  && s=standard
[[ $s -ge 60  &&  $s -le 69 ]]  && s=jiayou

case $s in                                     #case判断,变量为$s
great)                                         #这里$s变量为great,输入变量的内容
    echo "$s 666"                              #成绩great的给出评价666
;;
standard)                                 
    echo "$s 还不错哦"
;;
jiayou)
    echo "$s 加加油"
;;
*)
  echo "快去死"                               #不满足上述条件的,自动按这条条件去执行
esac                                         # 结束


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

注意case与if的区别,if是一个条件不满足,直接跳到最后的else去执行,case则是第一个条件不满足,则自动跳到下一个条件去让case判断,如果都不满足,则跳到echo,然后esac结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值