我有必须以递归方式执行的shell脚本。
Note :-
我不知道执行脚本需要多长时间,如果我安排crontab作业,那么就会发生碰撞。请帮我解决这个问题。
答案 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 &