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

时间:2017-10-31 20:56:38

标签: bash if-statement counter

有没有办法制作这个剧本

#!/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,但每次我猜

时都会重置计数器

2 个答案:

答案 0 :(得分:1)

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

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

PS:为安全起见,-eq应为-ge(大于或等于),以防错误将计时器增加2。

答案 1 :(得分:0)

您可以使用标志来完成相同的操作。 在脚本开头创建一个标志文件,并在结束脚本之前删除该文件。 并检查标志条件,无论你想要休息。