如何从特定点重新启动脚本?

How to restart a script from a specific point?

有没有办法制作这个脚本

#!/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 [=10=]
        let X++
    done
done

如果命令超时,从语句X=0之后重新启动,这样计数器就不会重置?我正在使用 exec [=12=] 但每次我猜

时它都会重置计数器

您可以使用标志来完成相同的操作。 在脚本的开头创建一个标志文件,并在结束脚本之前删除该文件。 并在您想要中断的任何地方检查标志条件。

timer="${1-0}"(计时器的默认值)开始,然后 exec [=11=] "${timer}" 以在后续运行中保持计时器值。

另一个优点是,这使您能够轻松测试超时时发生的情况 - 只需使用值 10 调用它即可。

PS:为了安全起见,您的 -eq 应该是 -ge(大于或等于),以防错误将计时器增加两个。