有没有办法制作这个剧本
#!/bin/bash
X=0
while true; do
if [ $X -eq 10 ]; then
sudo rm -r /var/log/daemon.log
sudo rm -r /var/log/syslog
sudo reboot
fi
expressvpn disconnect
while timeout 2 ./typer; [ $? -eq 124 ]
do
exec $0
let X++
done
done
如果命令超时,则在语句X=0
之后重新启动,以便计数器不会重置?我使用exec $0
,但每次我猜
答案 0 :(得分:1)
从timer="${1-0}"
(计时器的默认值)开始,然后以exec $0 "${timer}"
开始,以便在后续运行中保留计时器值。
另一个优点是,这使您可以轻松测试超时时发生的事情 - 只需使用值10调用它。
PS:为安全起见,-eq
应为-ge
(大于或等于),以防错误将计时器增加2。
答案 1 :(得分:0)
您可以使用标志来完成相同的操作。 在脚本开头创建一个标志文件,并在结束脚本之前删除该文件。 并检查标志条件,无论你想要休息。