shell 流程控制

1 if else语句

1.1 if语法

#多行
if  条件
then
    命令
fi
#一行
if 条件; then 命令; fi

1.2 if else 语法

if  条件
then
   命令
else
   命令
fi

1.3 if elif else 语法

if  条件1
then
   命令1
elif 条件2
then
    命令2
elif 条件3
then
    命令3
……
else
   命令N
fi

1.2 demo

提示"请输入你的考试成绩:" 接收用户输入一个成绩, 之后使用if else条件句判断
要求1: 小于 60 输出"不及格"
要求2: 大于等于60 并且 小于70 输出"及格"
要求2: 大于等于70 并且 小于80 输出"中等"
要求3: 大于等于80 并且 小于90 输出"良好"
要求4: 大于等于90 并且 小于等于100 输出"优秀"
要求5: 以上不符合输出"成绩不合法"
#!/bin/bash
read -p "请您输入您的考试成绩:"  score
if ((score<60))
then
   echo "不及格"
elif ((score>=60 && score<70))
then
   echo "及格"
elif ((score>=70 && score<80))
then
   echo "中等"
elif ((score>=80 && score<90))
then
   echo "良好"
elif ((score>=90 && score<=100))
then
   echo "优秀"
else
   echo "成绩不合法"

fi

在这里插入图片描述

2 内置命令:test

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

2.1 语法

if test 数字1 options 数字2 
then  
...
fi

options具体如下:

参数说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真

2.2 demo

#/bin/bash
num1=1 num2=1 num3=2
echo "num1=${num1},num2=${num2},num3=${num3}"


if test $num1 -eq $num2
then
   echo "num1 和 num2 相等"
else
   echo "num1 和 num2 不相等"
fi


if test $num3 -gt $num2
then
   echo "num3 大于 num2"
else
   echo "num3 小于 num2"
fi

在这里插入图片描述

3 流程控制:case语句

3.1 语法

case 值 in
匹配模式1)
    命令1
    命令2
    ...
    ;;
匹配模式2)
    命令1
    命令2
    ...
    ;;
*)
    命令1
    命令2
    ...
    ;;
esac

3.2 demo

#!/bin/bash
read -p "请输入一个0-7的数字:" number
case $number in
1)
   echo "星期一"
   ;;
2)
   echo "星期二"
   ;;
3)
   echo "星期三"
   ;;
4)
   echo "星期四"
   ;;
5)
   echo "星期五"
   ;;
6)
   echo "星期六"
   ;;
7)
   echo "星期天"
   ;;
*)
   echo "您输入的数字无效"
   ;;
esac

在这里插入图片描述

4 流程控制:while语句

4.1 语法

while 条件
do
	命令1
	命令2
	...
	continue; # 结束当前这一次循环, 进入下一次循环
	break; # 结束当前循环
done

4.2 demo

#!/bin/bash
read -p "请您输入一个数字:" number
let i=1
while (( $i <= $number))
do
   echo "第${i}次打印: hello world"
   ((i++))
done

在这里插入图片描述

5 流程控制:until语句

5.1 语法

until 条件
do
    命令
done

5.2 demo

#!/bin/bash
read -p "请您输入一个数字:" number
let i=1
until (( $i >= $number  ))
do
   echo "第${i}次打印:hello world"
   ((i++))
done

在这里插入图片描述

6 流程控制:for语句

6.1 语法

for var in item1 item2 ... itemN
do
    命令1
    命令2
    ...
done
#start:  循环范围的起始值,必须为整数
#end: 循环范围的结束值, 必须为整数
for var in {start..end}
do
	命令
done
for((i=start;i<=end;i++))
do
	命令
done

6.2 demo

#!/bin/bash
echo "##########循环方式1############"
for i in 1 2 3 4 5
do
  echo "第 ${i}次打印:  hello world"
done


echo "##########循环方式2############"
for i in {1..5}
do
 echo "第 ${i}次打印:  hello world"
done


echo "##########循环方式3############"
for((i=1;i<=5;i++))
do
 echo "第 ${i}次打印:  hello world"
done

6.3 无线循环

for((;;)); do 命令; done
#!/bin/bash
let i=1

for((;;))
do
   echo "第${i}次打印: hello world"
   if test $i -eq 10
   then
      break
   fi
   ((i++))
done

在这里插入图片描述

7 流程控制:select语句

select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能. select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景, 其他语言没有;

7.1 语法

select var in menu1 menu2 ...
do
    命令
done

7.2 demo

#!/bin/bash
echo "您的爱好是什么?"
select hobby in "编程" "游戏" "篮球" "游泳"
do
   echo "您选择的爱好是:${hobby}"
   break
done

echo "您的爱好是: ${hobby}"
                       

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

响彻天堂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值