Shell——流程控制(if、case、for、while)


一、if语句

1.基本语法

语法①:
if [ condition ];then
程序
fi

语法②:
if [ 条件判断式 ]
then
程序
fi

2.注意事项

(1)[ condition ],中括号和条件判断式之间必须有空格
(2)if后要有空格

3.示例演示

#!/bin/bash

if [ $1 -lt "5" ]
then
	 echo "第一个参数小于5"
elif [ $1 -eq "5" ]
then
	 echo "第一个参数等于5"
else
	 echo "第一个参数大于5"
fi


if [ $2 -lt "10" ];then
	 echo "第二个参数小于10"
elif [ $2 -eq "10" ];then
	 echo "第二个参数等于10"
else
	 echo "第二个参数大于10"
fi

运行结果:
在这里插入图片描述

三、case语句

1.基本语法

case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

2.注意事项

(1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2) 双分号“;;”表示命令序列结束,相当于C语言中的break。
(3) 最后的“*)”表示默认模式,相当于C语言中的default。

3.示例演示

#!/bin/bash

case $1 in
	 1)
		  echo "参数是1"
		  ;;
	 2)
		  echo "参数是2"
		  ;;
	 3)
		  echo "参数是3"
		  ;;
	 *)
		  echo "参数不是1、2、3"
		  ;;
esac

运行结果:
在这里插入图片描述

二、for循环

1.基本语法

语法①:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
语法②:
for 变量 in 值1 值2 值3…
do
程序
done

2.示例演示

程序1

#!/bin/bash

sum1=0
sum2=0

for ((i = 1; i <= 10; i++))
do
	 sum1=$[$i+$sum1]
done
echo "for1 sum1 is $sum1"

for j in "$*"
do
	 echo "for2 this is $j"
done

for k in "$@"
do
	 echo "for3 this is $k"
done


运行结果:
在这里插入图片描述
注意区分$*和 $@,上面的程序中将 & *和 $@都加了引号,看下面不加引号的程序:
程序2

#!/bin/bash

sum1=0

for ((i = 1; i <= 10; i++))
do
	 sum1=$[$i+$sum1]
done
echo "for1 sum1 is $sum1"

for j in $*
do
	 echo "for2 this is $j"
done

for k in $@
do
	 echo "for3 this is $k"
done


运行结果:
在这里插入图片描述
$*代表所有参数的整体, $@代表所有参数的集合,且每个参数仍然独立,对于 $@来说,加不加引号都一样,但是对于 $ *来说就有差别了,看下面的程序:
程序3

#!/bin/bash


for j in 1 2 3 4 5
do 
	 echo "for2 this is $j"
done

for k in "1 2 3 4 5"
do
	 echo "for3 this is $k"
done


运行结果:
在这里插入图片描述
类比一下,有点像C语言的宏,对于用所有参数替代掉原来的$*,将程序1和程序2中的 & *用所有参数替代掉,就能类比程序3。

四、while循环

1.基本语法

while [ 条件判断式 ]
do
程序
done
只要涉及条件判断式,就要注意中括号和式子之间的空格

2.示例演示

#!/bin/bash

sum=0
while [ $sum -lt 10 ]
do
	echo "sum 加了一次"
	sum=$[$sum+1]
done

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孟小胖_H

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

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

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

打赏作者

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

抵扣说明:

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

余额充值