在没有cron的情况下递归执行脚本

时间:2015-02-02 06:32:17

标签: linux bash shell

我有必须以递归方式执行的shell脚本。

Note :-

我不知道执行脚本需要多长时间,如果我安排crontab作业,那么就会发生碰撞。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

如果你从cron安排它,那么它不是递归的。如果你希望脚本以递归方式运行,那么答案是不言而喻的:它应该调用自己。只需添加:

exec $0 "$@"

在脚本的末尾,并确保在运行期间不要更改位置参数。 (如果您更改它们,则需要保存其原始值,以便可以使用它们调用脚本。)

编辑 - 现在问题已经在评论中澄清了。

如果您希望接收数字参数并希望在每次运行时将其递增10,则执行:

exec $0 $(expr $1 + 10)

作为脚本的最后一行。但是,递归执行此操作似乎有些愚蠢,因为在脚本中执行循环更有意义。

答案 1 :(得分:1)

您可以在后台执行脚本并在其上运行while循环。

#!/bin/bash

while true; do 
    <Your commands Start>
    .
    .
    .
    <Your commands End>
    sleep 60 ## Comment this line if you dont want to wait for 60 seconds for                   
             ## your next execution.
done

在后台运行此脚本。

$ ./script &