如何在 shell 脚本中创建无限循环 ?

Shell 脚本中的无限循环是一种非常有用的操作,例如等待特定事件,持续监控系统资源,或者反复执行命令。本文将讨论如何在 shell 中使用 for 和 while 结构创建无限循环。
1. 使用 while 创建无限循环
在 shell 脚本中使用 while 创建无限循环是最直接的方法之一,基本语法如下:
while [condition]
do
commands
done
要创建一个无限循环,你需要提供一个总是求值为 true 的条件。下面是一个例子:
#!/bin/bash
while true
do
echo "This is an infinite loop"
sleep 1
done
在本例中,echo 命令将无限期地运行,并每秒显示一次“This is an infinite loop”。增加 sleep 1 命令用于在下一次迭代前暂停循环一秒,防止过度资源消耗。
2. 使用 for 创建无限循环
for 结构是在 shell 脚本中创建无限循环的另一种方式。基本语法如下:
for ((initialization; condition; increment))
do
commands
done
要用‘ for ’结构创建一个无限循环,你可以使用下面的例子:
#!/bin/bash
for (( ; ; ))
do
echo "This is an infinite loop"
sleep 1
done
脚本中省略了 for 初始化、条件和增量部分,导致它无限期运行。
3. 应用实例
1. 监控系统资源
您可以使用无限循环来持续监控系统资源,如 CPU 和内存使用情况。例如:
#!/bin/bash
while true
do
echo "Current CPU and memory usage:"
top -b -n 1 | head -n 5
sleep 5
done
该脚本将每 5 秒运行一次 top 命令,显示当前 CPU 和内存使用情况。
2. 持续检查文件更改
一个无限循环可用于监视特定的文件或目录的变化。当您需要在文件被修改时触发某个操作,这将非常有用。
#!/bin/bash
file_path="/path/to/your/file.txt"
previous_checksum=$(md5sum "$file_path")
while true
do
current_checksum=$(md5sum "$file_path")
if [ "$previous_checksum" != "$current_checksum" ]; then
echo "File has been modified"
previous_checksum="$current_checksum"
fi
sleep 5
done
该脚本计算指定文件的 MD5 校验和,并每 5 秒持续监控其变化。
我的开源项目
评论已关闭
