【发布时间】:2019-03-07 20:14:35
【问题描述】:
有一个代码思路:
while true; do
*check variable*
if [ variable == true ]; then
*command1 to execute*
.
.
.
*commandN to execute*
fi
done
command1 如何只执行一次而不离开这个循环? 很明显command1应该在variable为真的时候每次只执行一次吧?
编辑:我不想离开循环,因为它是无头 debian 家庭服务器/存储设备监控脚本的一部分。检查变量是检查 VPN 连接是否打开。或者,如果文件夹中有新文件。或者,如果有新用户登录。触发器可能是无数的。 Command1 正在发送有关它的电子邮件通知。或向自定义日志文件写入新行。再次,无数的应用程序。我不想每次迭代都被邮寄。一旦状态发生变化,这就是永无止境的检查状态和执行命令。
【问题讨论】:
-
在下一次迭代之前将变量设置为 false。 (如果比较空值和非空值,语法会更简单;shell 变量是字符串。)
-
你为什么不想离开循环?如果变量为真,为什么不直接将 command1 带出并执行它?
标签: linux bash infinite-loop