05Shell流程控制

一、 if 判断

基本语法

if [ 条件判断式 ];then
  程序
fi

————————————————————————

if [ 条件判断式 ]
then
  程序
fi

————————————————————————

if [ 条件判断式 ]
then
  程序
elif [ 条件判断式 ]
then
  程序
else
  程序
fi

注意事项:

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

(2)if 后要有空格,推荐使用第二种方式

应用实例

案例:请编写一个 shell 程序,如果输入的参数,大于等于 60,则输出 “及格了”,如果小于 60,则输出 “不及格”

#!/bin/bash

if [ $1 -ge 60 ]
then
	echo "合格了"
elif [ $1 -lt 60 ]
then
	echo "不合格"
fi

二、case 语句

基本语法

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

注意事项:

(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“;;”表示命令序列结束,相当于 java 中的 break。

(3)最后的“*)”表示默认模式,相当于 java 中的 default。

应用实例

案例 1 :当命令行参数是 1 时,输出 “周一”, 是 2 时,就输出"周二", 其它情况输出 “other”

#!/bin/bash
case $1 in
"1")
	echo "周一"
;;
"2")
	echo "周二"
;;
*)
	echo "other"
;;
esac

三、for 循环

基本语法 1

for 变量 in 值 1 值 2 值 3...
do
  程序
done

应用案例 1:打印命令行输入的参数

#!/bin/bash

for i in y o u
do
	echo "I LOVE $i"
done

应用案例 2:打印命令行输入的参数 【会使用到 $* $@,比较 $* 和 $@区别】

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以 $1 $2 …$n 的形式输出所有参数

[niujifei@njf ~]$ cat for3.sh
#!/bin/bash

echo '=============$*============='
for i in $*
do
	echo "the num is $i"
done


echo '=============$@============='
for j in $@
do
	echo "the num is $j"
done
[niujifei@njf ~]$ ./for3.sh 1 2 3
=============$*=============
the num is 1
the num is 2
the num is 3
=============$@=============
the num is 1
the num is 2
the num is 3

当它们被双引号“”包含时,$*会将所有的参数作为一个整体,以“$1 2... 2 ... 2...n”的形式输 出所有参数;$@会将各个参数分开,以“$1” “ 2 ” . . . “ 2”...“ 2”...“n”的形式输出所有参数。

[niujifei@njf ~]$ cat for4.sh
#!/bin/bash
echo '=============$*============='
for i in "$*"
#$*中的所有参数看成是一个整体,所以这个 for 循环只会循环一次
do
	echo "the num is $i"
done


echo '=============$@============='
for j in "$@"
#$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次
do
	echo "the num is $j"
done
[niujifei@njf ~]$ ./for4.sh 1 2 3
=============$*=============
the num is 1 2 3
=============$@=============
the num is 1
the num is 2
the num is 3

基本语法 2

for (( 初始值;循环控制条件;变量变化 ))
do
  程序
done

应用案例:从 1 加到 100 的值输出显示

#!/bin/bash

SUM=0
for ((i=1;i<=100;i++))
do
	SUM=$[$SUM+$i]
done

echo "SUM=$SUM"

四、while 循环

基本语法

while [ 条件判断式 ]
do
  程序
done

应用案例 1 :从命令行输入一个数 n,统计从 1+…+ n 的值是多少?

#!/bin/bash
SUM=0
i=1
while [ $i -le 100 ]
do
	SUM=$[$SUM+$i]
	i=$[$i+1]
done
echo $SUM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值