Shell编程条件语句 if case (愿此行终抵群星)

一、Shell条件语句

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真 true)时表示成功,返回值为非0值(假 false)时表示失败或异常。

test 命令
更多操作可使用 man test 查看

1.条件表达式测试

[ 条件表达式 ]

[root@localhost1 ~]#[ 1 = 1 ]
[root@localhost1 ~]#echo $?
0
 
[root@localhost1 ~]#[ 1 > 10 ]
[root@localhost1 ~]#echo $?
1

2.文件测试

[ 操作符 文件或目录 ]

在这里插入图片描述

//测试 /root 是否是一个目录
[root@localhost1 ~]#test -d /root/
[root@localhost1 ~]#echo $?
0  --//测试 /root 是否是一个文件
[root@localhost1 ~]#[ -f /root/ ]
[root@localhost1 ~]#echo $?
1  --

3.整数值比较

[ 整数或变量 操作符 整数或变量 ]

在这里插入图片描述

[root@localhost1 ~]#a=10
[root@localhost1 ~]#b=20
 
//测试 $a 是否等于10
[root@localhost1 ~]#test $a -eq 10
[root@localhost1 ~]#echo $?
0
//测试 $a 是否大于 $b
[root@localhost1 ~]#test $a -gt $b
[root@localhost1 ~]#echo $?
1

4.字符串比较

[字符串1 操作符 字符串2]

在这里插入图片描述

as[root@localhost1 ~]#echo $LANG
zh_CN.UTF-8
 
//判断 $LANG 是否为 us.en
[root@localhost1 ~]#[ $LANG = "us.en" ]
[root@localhost1 ~]#echo $?
1

5.逻辑测试

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

在这里插入图片描述

[root@localhost1 ~]#a=1
[root@localhost1 ~]#b=1
 
//逻辑与,两条命令均执行成功才返回0
[root@localhost1 ~]#[ $a = 1 ] || [ $a = $b ]
[root@localhost1 ~]#echo $?
0
 
//逻辑或,其一为真则返回0
[root@localhost1 ~]#[ $a > 1 ] || [ $a = $b ]
[root@localhost1 ~]#echo $?
0

特殊用法:&& 与 || 一起使用(逻辑与执行返回状态为否,则继续执行逻辑或后的命令)

//创建文件1.txt
[root@localhost1 data]#touch 1.txt
[root@localhost1 data]#ls
1.txt
 
//判断1.txt 是否是目录,逻辑与返回状态为否,继续执行逻辑或后的命令
[root@localhost1 data]#[ -d 1.txt ] && echo "1.txt 是目录" || echo "1.txt 不是目录"
1.txt 不是目录

二、if 条件语句(串行执行)

(1)单分支结构

if [ 条件表达式 ];than
执行命令行 (当条件判断成立)
fi

在这里插入图片描述

//判断3是否大于2
[root@localhost1 ~]#vim test1.sh
#!/bin/bash
if [ 3 -ge 2 ]; then
  echo "yes"
fi
 
[root@localhost1 ~]#bash test1.sh
yes

(2)双分支结构

if [ 条件表达式 ];than
执行命令行 (当条件判断成立)
else
执行命令行 (当条件判断不成立)
fi

在这里插入图片描述

(3)多分支结构

if [ 条件表达式1 ];than
执行命令行 (当条件判断1成立)
elif [ 条件表达式2 ];than – 可以有多个elif 判断语句
执行命令行 (当条件判断2成立)
else
执行命令行 (当条件判断都不成立)
fi

在这里插入图片描述

//判断年龄满足大于等于18的购买成人票,不满足购买学生票
[root@localhost1 ~]#vim test2.sh
#!/bin/bash
read -p "请输入您的年龄:" age
if [ $age -ge 18 ];then
  echo "请购买成人票(80元)"
else
  echo "请购买学生票(40元)"
fi
 
[root@localhost1 ~]#bash test2.sh
请输入您的年龄:20
请购买成人票(80元)
 
[root@localhost1 ~]#bash test2.sh
请输入您的年龄:8
请购买学生票(40元)

(3)多分支结构

if [ 条件表达式1 ];than
执行命令行 (当条件判断1成立)
elif [ 条件表达式2 ];than – 可以有多个elif 判断语句
执行命令行 (当条件判断2成立)
else
执行命令行 (当条件判断都不成立)
fi

[root@localhost1 ~]#vim test2.sh
#!/bin/bash
read -p "请输入您的年龄:" age
if [ $age -ge 60 ];then
  echo "请购买老人票(20元)"
elif [ $age -gt 18 ] && [ $age -lt 60 ];then
  echo "请购买成人票(80元)"
elif [ $age -ge 6 ] && [ $age -lt 18 ];then
  echo "请购买学生票(40元)"
else
  echo "请购买儿童票(20元)"
fi
 
[root@localhost1 ~]#bash test2.sh
请输入您的年龄:70
请购买老人票(20元)
 
[root@localhost1 ~]#bash test2.sh
请输入您的年龄:23
请购买成人票(80元)
 
[root@localhost1 ~]#bash test2.sh
请输入您的年龄:14
请购买学生票(40元)
 
[root@localhost1 ~]#bash test2.sh
请输入您的年龄:3
请购买儿童票(20元)

三、case语句(并行执行)

case 变量名 in
模式1) – 指定模式可以有多个(支持通配符)
命令序列
;;
模式2)
命令序列
;;
*) – 默认模式(除上述指定模式的其他情况)
默认命令序列
;;
esac

[root@localhost1 ~]#vim test3.sh
#!/bin/bash
read -p "请输入你的分数(0~100):" num
 
case $num in
100)
  echo "满分!"
  ;;
 
9[0-9])
  echo "优秀!"
  ;;
 
[78][0-9])
  echo "良好!"
  ;;
 
6[0-9])
  echo "合格!"
  ;;
 
[0-9]|[1-5][0-9])
  echo "不及格!"
  ;;
 
*)
  echo "输入有误,请输入 0~100 的范围!"
esac
 
[root@localhost1 ~]#bash test3.sh
请输入你的分数(0~100):100
满分!
 
[root@localhost1 ~]#bash test3.sh
请输入你的分数(0~100):97
优秀!
 
[root@localhost1 ~]#bash test3.sh
请输入你的分数(0~100):78
良好!
 
[root@localhost1 ~]#bash test3.sh
请输入你的分数(0~100):62
合格!
 
[root@localhost1 ~]#bash test3.sh
请输入你的分数(0~100):45
不及格!
 
[root@localhost1 ~]#bash test3.sh
请输入你的分数(0~100):123
输入有误,请输入 0~100 的范围!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值