1.定义repeat函数:
repeat()
{
while true
do
$@ && return
done
}
while循环以函数参数形式(通过$@访问)传入命令;执行成功则返回,否则退出。
2.另一种更快捷的方式,把true替换为冒号:
repeat() { while :; do $@ && return; done }
在大多数系统中,true是作为/bin中的一个二进制文件来实现的,这就意味着每执行一次while循环,shell就不得不生成一个进程。
为了避免这种情况,可以使用shell内置的命令冒号:,该命令的退出状态总是为0。尽管可读性不高,但是肯定执行速度快得多。
3.加入延时
repeat() { while :; do $@ && return; sleep 30; done }
每30秒才执行一次。
结束。