9 Shell脚本中的选择结构与跳转语句
在之前的章节中,我们讨论了控制结构中的循环结构(for
、while
、until
),了解了如何在Shell脚本中实现重复执行某些操作。在本篇中,我们将专注于另一类重要的控制结构——选择结构与跳转语句。这些控制结构允许我们根据条件的不同来执行不同的代码块,或者跳转到脚本中的其他位置。
选择结构
选择结构使得程序能够根据给定条件不同而选择执行不同的命令。在Shell脚本中,最常用的选择结构是 if
语句和 case
语句。
1. if
语句
if
语句是用来根据测试条件的结果来决定是否执行某块代码的基本结构。基本语法如下:
if [ condition ]; then
# statements
elif [ another_condition ]; then
# statements
else
# statements
fi
示例
以下示例展示了使用 if
语句根据用户输入的数字输出不同的消息:
#!/bin/bash
echo "请输入一个数字:"
read number
if [ $number -gt 0 ]; then
echo "您输入的数字是正数。"
elif [ $number -lt 0 ]; then
echo "您输入的数字是负数。"
else
echo "您输入的数字是零。"
fi
2. case
语句
如果需要基于一个变量的多个值来选择执行的代码块,case
语句是一个更好的选择。它的基本语法如下:
case variable in
pattern1)
# statements
;;
pattern2)
# statements
;;
*)
# default statements
;;
esac
示例
下面是一个使用 case
语句的示例,根据输入的星期几输出相应的消息:
#!/bin/bash
echo "请输入一个星期几(1-7):"
read day
case $day in
1)
echo "今天是周一。"
;;
2)
echo "今天是周二。"
;;
3)
echo "今天是周三。"
;;
4)
echo "今天是周四。"
;;
5)
echo "今天是周五。"
;;
6)
echo "今天是周六。"
;;
7)
echo "今天是周日。"
;;
*)
echo "输入无效,请输入1到7之间的数字。"
;;
esac
跳转语句
跳转语句用于在脚本中控制流程,可以让我们在符合特定条件时跳过某些代码块或退出脚本等。Shell中常见的跳转语句包括 break
、continue
和 exit
。
1. break
break
用于退出循环结构。你可以在 for
、while
或 until
循环中使用 break
来提前结束循环。
示例
下面的示例展示了如何使用 break
退出一个循环:
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]; then
break
fi
echo "当前数字是:$i"
done
输出将为:
当前数字是:1
当前数字是:2
当前数字是:3
当前数字是:4
2. continue
continue
用于跳过当前循环中的剩余代码,直接开始下一次循环。
示例
以下示例在循环中跳过偶数并只输出奇数:
#!/bin/bash
for i in {1..10}
do
if [ $((i % 2)) -eq 0 ]; then
continue
fi
echo "当前是奇数:$i"
done
输出将为:
当前是奇数:1
当前是奇数:3
当前是奇数:5
当前是奇数:7
当前是奇数:9
3. exit
exit
用于终止脚本的执行,并且可以选择性地返回一个退出状态。使用 exit
可以将一个状态码返回给调用者,状态码通常用于表示脚本的执行结果。
示例
下面是一个使用 exit
的实例:
#!/bin/bash
echo "开始脚本执行"
# 在这里模拟一个错误
if [ ! -f "somefile.txt" ]; then
echo "文件不存在,终止脚本。"
exit 1
fi
echo "继续执行脚本"
当运行这个脚本而没有 somefile.txt
文件时,它会输出文件不存在的信息并以状态码 1
退出。
总结
在本篇中,我们探讨了 Shell 脚本中的选择结构 if
和 case
以及跳转语句 break
、continue
和 exit
。通过正确地使用这些控制结构,您可以编写出灵活而高效的脚本,能够根据不同的条件或状态执行特定的代码。这些基本的控制结构为后续学习 Shell 脚本中的函数与变量打下了良好的基础。