循环执行脚本

循环执行脚本

如何使脚本循环执行?脚本结束时我需要再次运行它。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意味着每次最多运行一个进程,而不是每次运行脚本时都添加一个新进程。

相关内容