BASH shell脚本篇2——条件命令
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
这篇文章介绍下BASH shell中的条件相关的命令包括if, case, while, until, for, break, continue。之前有介绍过shell的其它基本命令请参考BASH shell脚本篇1——基本命令
1. If语句
if
语句用于在顺序执行语句的流程中执行条件任务。If
语句通常用于在Bash脚本中做出决定。它们根据可能设置的条件来决定是否运行一段代码。if语句的语法格式有几种如下
# 1. if语句基本格式
# 注意观察第一行中使用的空格在第一行末尾使用分号。两者都必须使
# 用if条件语句以fi结尾
if [ condition ];
then
statements
fi
# 2. if-else语法格式
if [ condition ];
then
<if block commands>
else
<else block commands>
fi
# 3. else-if语法格式
if [ condition ];
then
<commands>
elif [ condition ];
then
<commands>
else
<commands>
fi
if语句condition中可以包含一些操作符去处理更复杂的场景。以下是一些最常用的操作符
操作符 | 描述 |
! EXPRESSION | 检查EXPRESSION是否为假 |
-n STRING | 检查STRING的长度是否大于零 |
-z STRING | 检查STRING的长度是否为零(即为空) |
STRING1 == STRING2 | 检查STRING1是否等于STRING2 |
STRING1 != STRING2 | 检查STRING1是否不等于STRING2 |
INTEGER1 -eq INTEGER2 | 检查INTEGER1在数值上是否等于INTEGER2 |
INTEGER1 -gt INTEGER2 | 检查INTEGER1在数值上是否大于INTEGER2 |
INTEGER1 -lt INTEGER2 | 检查INTEGER1在数值上是否小于INTEGER2 |
-d FILE | 检查FILE是否存在并且它是一个目录 |
-e FILE | 检查FILE是否存在 |
-r FILE | 检查FILE是否存在并授予读取权限 |
-s FILE | 检查FILE是否存在并且其大小大于零(表示它不为空) |
-w FILE | 检查FILE是否存在并授予写权限 |
-x FILE | 检查FILE是否存在并授予执行权限 |
2. case语句
Bash case语句是具有许多ELIF
元素的IF-THEN-ELSE
的最简单形式。使用case
语句使bash脚本更具可读性并且更易于维护。它通常用于简化具有多种不同选择的复杂条件。case语句的语法如下
case expression in
pattern_1)
statements
;;
pattern_2)
statements
;;
pattern_3|pattern_4|pattern_5)
statements
;;
pattern-n)
statements
;;
*)
statements
;;
esac
# 包含语句的模式称为子句并且必须以双分号(;;)终止
# 星号(*)用作定义默认情况的最终模式。当用作最后一种情况时它用作默认情况
首先case
语句扩展表达式并尝试与每个包含的模式匹配。找到匹配项后将执行所有链接的语句直到双分号(;;
)为止。在第一个匹配项之后case
以最后执行的语句的退出状态终止。
如果没有匹配的模式则case
的退出状态为零。否则返回状态是已执行语句的退出状态。
如果使用默认的星号(*
)模式则在没有匹配模式的情况下将执行它。
3. for循环
bash shell脚本也支持for
循环以执行重复性任务。它有助于在字符串中的一系列单词或数组中的元素上迭代一组特定的语句。例如可以多次运行UNIX命令(或任务)也可以仅使用for
循环读取和处理命令列表。
可以通过两种方式在bash脚本上应用for
循环。一种方法是for-in
另一种方法是C语言语法。for
循环的语法
# 方法1list可以包含数字或字符串等以空格分隔
for variable in list
do
commands
done
# 方法2
for (( expression1; expression2; expression3 ))
do
commands
done
当bash的三个表达式中没有“开始条件和增量”循环时它将变为无限循环。要终止Bash中的无限循环可以按Ctrl + C。
4. while循环
while循环可以定义为控制流语句只要所应用的条件为真该语句就允许重复执行给定的命令集。例如可以运行多次echo
命令也可以仅逐行读取文本文件然后使用Bash中的while循环处理结果。while循环格式
while [ expressions ];
do
commands;
multiple commands;
done
# expressions可以是单条件或多条件
5. until循环
until
循环用于根据表达式的布尔结果重复执行一组命令。仅在表达式的值为真之前执行命令集。因此当表达式的计算结果为false
时将迭代执行一组命令。当表达式首次为真时循环终止。until
循环与while
循环相似但是概念相反。until
循环的语法格式
until [ expressions ];
do
command1
command2
. . .
. . .
commandN
done
6. break和continue
可以在循环中使用break
语句来终止循环。可以在循环中使用continue
语句来跳过特定条件下的特定语句。它告诉Bash停止执行循环的特定迭代并处理下一个迭代。