我如何告诉bash脚本从顶部重新开始?

Dav*_*ter 4 linux bash repeat

例如,在下面的脚本startover从顶部开始:

##########################################################################
## CHECK TIME
##########################################################################
time=$(date +%k%M)

if [[ "$time" -ge 1800 ]] && [[ "$time" -le 2200 ]];then
echo "Not a good time to transcode video!" && exit 0
else
echo "Excellent time to transcode video!" && echo "Lets get started!"
fi
##########################################################################
## CHECK TIME
##########################################################################
startover
Run Code Online (Sandbox Code Playgroud)

还要记住exit 0应该能够停止脚本.

Iva*_*n X 6

把它放在while循环中.我还建议你添加一个"睡眠",这样你就不会像现在这样快速地使用机器的CPU:

while true; do
    ##########################################################################
    ## CHECK TIME
    ##########################################################################
    time=$(date +%k%M)

    if [[ "$time" -ge 1800 ]] && [[ "$time" -le 2200 ]]; then
        echo "Not a good time to transcode video!" && exit 0
    else
        echo "Excellent time to transcode video!" && echo "Lets get started!"
    fi
    ##########################################################################
    ## CHECK TIME
    ##########################################################################
    for i in {1..5}; do
        echo $i
        sleep 1
    done
done
Run Code Online (Sandbox Code Playgroud)


che*_*ner 5

您可以使用以下行"递归":

exec bash "$0" "$@"
Run Code Online (Sandbox Code Playgroud)

由于$0是当前脚本的路径,因此该行在不创建新进程的情况下启动脚本,这意味着您无需担心机器上的进程表溢出过多的重新启动.