1.流程控制语句
Shell程序或者说其他的程序,都是顺序执行的,也就是第一行执行完再执行第二行,以此类推,依次执行。而流程控制语句
如:if条件判断语句,你只有条件成立了,才能够执行,否则就不执行其中的程序,这就会跳过一些执行命令。for 循环也是流程控制类语句,是重复执行指定次数的相同代码。除了上面的条件判断语句和循环语句外,还有特殊流程控制语句。
比如:exit 语句、break 语句、continue 语句。
2.exit语句
系统有一个exit 命令,用于退出当前用户的登录状态。exit语句是用来退出当前脚本的。也就是说,在Shell脚本中,只要碰到了exit语句,后续的程序就不再可是在Shell脚本中,执行,而直接退出脚本。
语法如下:exit
如果exit 语句之后定义了返回值,那么这个脚本执行之后的返回值就是我们自己定义的返回值。可以通过查询$?这个变量,来查看返回值
如果exit 语句之后没有定义返回值,脚本执行之后的返回值是,执行exit 语句之前,最后执行的一条命令的返回值
案例
#!/bin/bash
# 检查用户输入的数字是否为负数
check_number() {
if [ $1 -lt 0 ]; then
echo “输入的数字不能为负数!”
exit 1 # 如果输入的数字为负数,退出整个脚本并返回状态码 1
else
echo “输入的数字是正数!”
fi
}
# 获取用户输入的数字
read -p “请输入一个数字:” user_input
check_number $user_input
echo “脚本执行完毕!”
在这个示例中,首先定义了一个名为 check_number 的函数,该函数接受一个参数并检查参数是否为负数。如果参数为负数,则输出提示信息并使用 exit 语句退出整个脚本,并返回状态码 1。如果参数为正数,则输出相应信息并继续执行后续脚本。
用户输入一个数字后,脚本会调用 check_number 函数进行检查,如果输入的数字为负数,脚本会立即退出并输出错误信息;如果输入的数字为正数,脚本会正常执行并输出 “脚本执行完毕!”。
3.break语句
特殊流程控制语句 break 语句的作用,当程序执行到break 语句时,会结束整个循环(也就是跳出这个循环,继续之后后边的命令)
案例
[root@shell /server/scripts]$ vim break.sh
#!/bin/bash
# 设置循环上限
max=5
echo “开始循环:”
# 使用循环遍历数字并输出
for ((i=1; i<=$max; i++)); do
echo “当前数字是 $i”
# 当数字为3时,使用 break 结束循环
if [ $i -eq 3 ]; then
echo “发现数字3,结束循环!”
break
echo “循环结束!”
fi
done
[root@shell /server/scripts]$ sh break.sh
开始循环:
当前数字是 1
当前数字是 2
当前数字是 3
发现数字3,结束循环!
区别
[root@shell /server/scripts]$ vim break.sh
#!/bin/bash
# 设置循环上限
max=5
echo “开始循环:”
# 使用循环遍历数字并输出
for ((i=1; i<=$max; i++)); do
echo “当前数字是 $i”
# 当数字为3时,使用 break 结束循环
if [ $i -eq 3 ]; then
echo “发现数字3,结束循环!”
break
fi
done
echo “循环结束!”
[root@shell /server/scripts]$ sh break.sh
开始循环:
当前数字是 1
当前数字是 2
当前数字是 3
发现数字3,结束循环!
循环结束!
在这个示例中,脚本会从1循环到5,并在每次循环中输出当前数字。当数字为3时,脚本会输出 “发现数字3,结束循环!” 并使用 break 提前结束循环。因此,循环只会执行到数字3,然后结束。
运行脚本后,可以看到输出结果包括了从1到3的数字,以及 “发现数字3,结束循环!” 和 “循环结束!”。
4.语句
continue 语句也是结束流程控制的语句。如果在循环中, continue 语句只会结束当前单次循环(跳出本次循环 继续下一次循环)
案例
[root@shell /server/scripts]$ cat continue.sh
#!/bin/bash
# 设置循环上限
max=5
echo “开始循环:”
# 使用循环遍历数字并输出
for ((i=1; i<=$max; i++)); do
# 当数字为2或4时,使用 continue 跳过当前循环
if [ $i -eq 2 ] || [ $i -eq 4 ]; then
echo “跳过数字 $i 的输出”
continue
fi
echo “当前数字是 $i”
done
echo “循环结束!”
[root@shell /server/scripts]$ sh continue.sh
开始循环:
当前数字是 1
跳过数字 2 的输出
当前数字是 3
跳过数字 4 的输出
当前数字是 5
循环结束!