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
循环结束!

作者 dmxsp

发表回复

您的电子邮箱地址不会被公开。