Shell中的流程控制

Shell里面的流程控制不能为空,因此如果else里面没有语句就不要写else,貌似也可以在else里面写一个":"表示什么都不做。源自实验楼的高级 bash 脚本编程指南课程。

1. if else 语句

1.1 if

if语句的语法格式为:

if condition
then
	command 1
	command 2
	...
	command N
fi

1.2 if-else

if else语句的语法格式为:

if condition
then
	command 1
	command 2
	...
	command N
else
	command 1
	command 2
	...
	command M
fi

1.3 if-elif-else

if elif else语句的语法格式为,else语句如果没有就不要写:

if condition1
then
	command 1
	command 2
	...
	command N
elif condition2
then
	command 1
	command 2
	...
	command M
else
	command 1
	command 2
	...
	command P
fi

1.4 例子

一个简单的例子

 a=10
 b=20
 if [ $a -eq $b ]
 then
 	echo "a == b"
 elif [ $a -gt $b ]
 then
 	echo "a > b"
 elif [ $a -lt $b ]
 then
 	echo "a < b" 
 else
 	echo "Ineligible"
 fi

2. for 语句

2.1 for的一般格式

for循环一般格式为:

for var in item1 item2 ... itemN
do
	command 1
	command 2
	...
	command N
done

2.2 例子1

for loop in 1 2 3 4 5
do
	echo "The value is: $loop"
done

输出结果为:

The value is: 1
The value is: 2
The value is: 3
The value is: 4

2.3 例子2

for str in This is a string
do
	echo $str
done

输出结果为:

This
is
a
string

3. while 语句

3.1 基本格式

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

while condition
do
	command 1
	command 2
	...
	command N
done

3.2 例子1

a=1
while[ $a -lt 6 ]
do
	echo $a
	let "a++"  #用于指定算数运算符,即 let expretion,let只能执行整数的相关操作,也可以写为 let a=$a+1
done

输出结果为:

1
2
3
4
5

3.3 例子2

echo 'press <CTRL-D> exit'
echo -n 'Who do you think is the most handsome: '
while read MAN
do
    echo "Yes!$MAN is really handsome"
done

该实验中,输入的字符串存在MAN中,按回车表示输入结束,按<CTRL-C>或者<CTRL-D>可以结束程序的等待输入状态。

4. 无限循环

4.1 语法格式1

无限循环的语法格式为:

while :    # ":"在shell中表示空命令,也可以视为true。
do
	command 1
	command 2
	...
	command N
done

或者

while true
do
	command 1
	command 2
	...
	command N
done

或者

for (( ; ; ))

5. until 语句

5.1 简介

until循环执行一系列命令直至条件为真时停止。until循环与while循环在处理方式上正好相反。一般while循环由于until循环, 但是在某些特殊情况下,until循环更加有用。until循环的语法格式为:

until conditon
do
	command 1
	command 2
	...
	command N
done

5.1 例子

a=1
until[ $a -gt 6 ]
do
	echo $a
	let "a++"  #用于指定算数运算符,即 let expretion,let只能执行整数的相关操作,也可以写为 let a=$a+1
done

输出结果为:

1
2
3
4
5
6

6 case 语句

6.1 简介

shell中case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句的格式如下:

case var in
item 1)
	command 1
	command 2
	...
	command N
	;;
item 2)
	command 1
	command 2
	...
	command M
	;;
esac
  • var后面的单词必须为in,每一个item必须以右括号结束,取值可以为变量或者常数或者字符串。匹配发现取值符合某一个item之后,其间所有命令开始执行直至";;".
  • 取值将检测匹配的每一个item,一旦匹配成功,则执行相匹配的命令并且不再继续匹配。如果没有一个item匹配,使用星号"*"捕获该值,再执行后面的命令。
  • case语句需要一个esac作为结束语句,";;"表示break。

6.2 例子

c="ccc"
read MAN
case $MAN in
	"aaa") echo "aaa";;
	"bbb") echo "bbb";;
	$c) echo "ccc";;
	*) echo "else";;
esac

7. 跳出循环

7.1 简介

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,shell中有两个命令来实现这个功能:break和continue。

7.2 break

break命令允许跳出所有循环(终止执行后面的所有循环)。
例如:

while :
do
	echo -n "Enter a number between 1 and 5: "
	read aNum
	case $aNum in
		1|2|3|4|5) echo "The number you entered is $aNum!";;
		*) echo "The number you entered is not between 1 and 5! game over!!!"
		break;;
	esac
done

结果输出为:

Enter a number between 1 and 5: 5
The number you entered is 5!
Enter a number between 1 and 5: 6
The number you entered is not between 1 and 5! game over!!!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

7.3 continue 语句

与c++中类似,continue不会跳出整个循环体,只是会跳出当前循环。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值