如何使脚本循环执行?脚本结束时我需要再次运行它。Cron 不适合,因为我需要在上一个脚本之后立即运行该脚本
答案1
任何需要无限循环的编程语言中的基本控制结构都是while
循环。
while true ; do /path/to/script.sh ; if [ $? -ne 0 ] ; then continue ; else break ; fi ; done
更易读的格式是:
while true
do
/path/to/script.sh # Ensure your script actually outputs exit status
if [ $? -ne 0 ] ; then
continue # if exit status not 0 ( not success ) , repeat
else
break # if successful - exit
fi
done
当然,你需要确保你的脚本在成功时确实具有等于 0 的返回状态。你可能想或不想使用完整路径,或./
运算符在当前目录中运行脚本,或指定解释器,例如python /my/python/script.py
如果需要,您可以在下一次迭代开始之前添加延迟。为此,您可以sleep 0.250
在之后fi
但之前放置done
答案2
运行它们:
/path/to/script.sh && /path/to/script.sh
如果第一个成功,第二个就会运行。
不依赖于第一个的成功:
/path/to/script.sh; /path/to/script.sh
仅当第一个失败时才运行第二个:
/path/to/script.sh || /path/to/script.sh
对于真正的循环执行,可以使用递归函数:
run_script () { /path/to/script.sh || run_script ;}
答案3
要让你的脚本反复执行,你可以这样做(确保脚本已chmod 755
设置):
#!/bin/bash
echo "test" #or whatever you do in your script
exec sh <scriptname>
您可以停止您的脚本ctrl+ c。
请注意,使用exec
意味着每次最多运行一个进程,而不是每次运行脚本时都添加一个新进程。