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秒才執行一次。
結束。