例如,在下面的脚本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
另外请记住exit 0
应该能够停止脚本。
答案 0 :(得分:6)
将它放入while循环中。我还建议你添加一个" sleep"这样你就不会像现在这样快速地使你的机器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
答案 1 :(得分:5)
你可以"递归"使用以下行:
exec bash "$0" "$@"
由于$0
是当前脚本的路径,因此该行启动脚本而不创建新进程,这意味着您不必担心机器上的进程表溢出过多的重启。
答案 2 :(得分:2)
在脚本开头不要使用WHOP,因为下面的条件将退出脚本并打破循环。
echo "Not a good time to transcode video!" && exit 0
您可以尝试捕获退出信号,以便在脚本退出时重新启动
##########################################################################
## CHECK TIME
############bash##############################################################
trap '<path to script> ' EXIT
time=$(date +%k%M)
if [[ "$time" -ge 1800 ]] && [[ "$time" -le 2200 ]];then
echo "Not a good time to transcode video!" && exit 0
sleep 1;
else
echo "Excellent time to transcode video!" && echo "Lets get started!"
sleep 1;
fi
##########################################################################
## CHECK TIME
##########################################################################
echo 1
echo 2
echo 3
echo 4
echo 5
startover
注意:我添加1秒的睡眠时间,因为这样可以让您有时间查看消息。捕获退出信号并重新运行脚本就像一个while循环。我也假设这些代码在脚本中。
答案 3 :(得分:1)
如何将整个脚本封装在while
循环中?例如,
while :
do
script
done
您可能想要添加条件以摆脱循环。
答案 4 :(得分:1)
这不是一个好习惯,而是你要求的。
将它放在脚本的末尾。 "$( cd "$( dirname "$0" )" && pwd )/$(basename $0)"