Bash 中包含循环判断的脚本19


简介

在 Bash 脚本中,循环和判断语句是必不可少的元素,允许用户自动化任务并控制脚本执行流程。本文将详细探讨 Bash 中包含循环判断的脚本,包括 for 循环、while 循环以及 if 和 case 语句的用法。

for 循环

for 循环用于对一组项目进行迭代。其语法如下:```bash
for variable in list
do
# 循环体
done
```

其中,variable 是循环变量,list 是要迭代的项目列表,循环体 是在每个项目上执行的命令。

示例


以下脚本使用 for 循环遍历一个文件并打印每一行:```bash
for line in $(cat )
do
echo $line
done
```

while 循环

while 循环用于在满足某些条件时执行代码块。其语法如下:```bash
while condition
do
# 循环体
done
```

其中,condition 是要评估的条件,循环体 是在条件为真时执行的命令。

示例


以下脚本使用 while 循环不断提示用户输入,直到输入 "q" 为止:```bash
while true
do
read -p "请输入一个值 (按 q 退出):" input
if [ $input = "q" ]; then
break
fi
done
```

if 语句

if 语句用于基于条件执行不同的代码块。其语法如下:```bash
if condition
then
# if 代码块
else
# else 代码块
fi
```

其中,condition 是要评估的条件,if 代码块 在条件为真时执行,else 代码块 在条件为假时执行。

示例


以下脚本使用 if 语句根据文件大小打印不同的消息:```bash
if [ -s ]; then
echo "文件不为空"
else
echo "文件为空"
fi
```

case 语句

case 语句用于根据多个条件执行不同的代码块。其语法如下:```bash
case variable in
pattern1)
# 代码块 1
;;
pattern2)
# 代码块 2
;;
...
*)
# 默认代码块
;;
esac
```

其中,variable 是要评估的变量,pattern1、pattern2 等是不同的匹配模式,代码块 1、代码块 2 等是与相应模式匹配时执行的命令,默认代码块 是当没有其他模式匹配时执行的命令。

示例


以下脚本使用 case 语句根据输入的字母打印不同的字符:```bash
case $letter in
a)
echo "元音"
;;
b)
echo "辅音"
;;
c)
echo "辅音"
;;
*)
echo "无效输入"
;;
esac
```

使用循环判断的脚本示例

以下是一个结合 for 循环、while 循环和 if 语句的脚本示例,用于查找文件中包含特定单词的行:```bash
#!/bin/bash
# 获取要搜索的文件名
read -p "请输入要搜索的文件名:" file
# 获取要搜索的单词
read -p "请输入要搜索的单词:" word
# 使用 for 循环遍历文件中的每一行
for line in $(cat $file)
do
# 使用 while 循环在当前行中搜索单词
while true
do
# 使用 if 语句检查单词是否在当前行中
if [[ $line =~ $word ]]; then
# 输出包含单词的行
echo $line
break
fi
# 移动到下一行
line=${line#*\}

# 如果行已结束,则退出 while 循环
if [ -z "$line" ]; then
break
fi
done
done
```

循环和判断语句是 Bash 脚本中的强大工具,使您可以自动化任务、控制脚本执行流程并处理复杂逻辑。通过理解这些语句的语法和用法,您可以编写功能强大且高效的 Bash 脚本。

2024-12-23


上一篇:Bash脚本的开端:入门指南

下一篇:Bash 脚本:实验原理和运行