Возможно ли добавить в libshell такую функцию для конечного периодического теста с таймаутом? (название, возможно, неоптимальное...) # $1 is a test (e.g. "-s" for "non-empty file") # $2 is an object to apply test to (e.g. a filename) # $3 is timeout (5 by default; e.g. "10") # $4 is a pause (1 sec by default; e.g. "0.1") wait_test() { [ -n "$1" -a -n "$2 ] || return tries=${3:-5} pause=${4:-1} for i in `seq 1 $tries`; do [ "$1" "$2" ] && break sleep $pause done } В некоторых ситуациях может хотеться поспать "перед", а не "после", но это можно компенсировать добавлением своего sleep перед вызовом данной функции. Пример ситуации, когда понадобилось -- alterator-ovz: alt_new() { # ... запускаем_длинную_команду_в_фоне \ > $LOG_DIR/$in_profile 2>&1" & # а вот здесь можем вернуться слишком рано # и за этим логом следить не предложат for i in `seq 1 5`; do [ -s "$LOG_DIR/$in_profile" ] && break sleep 1 done # но мы хитрей :) echo '()' }
(В ответ на комментарий №0) > Пример ситуации, когда понадобилось -- alterator-ovz: > > alt_new() > { > # ... > запускаем_длинную_команду_в_фоне \ > > $LOG_DIR/$in_profile 2>&1" & Почему после этого не сказать wait и после этого проверить файл ? > # а вот здесь можем вернуться слишком рано > # и за этим логом следить не предложат > for i in `seq 1 5`; do > [ -s "$LOG_DIR/$in_profile" ] && break > sleep 1 > done > # но мы хитрей :) > echo '()' > }
Уже не помню, но про wait знал и тогда.
(В ответ на комментарий №2) > Уже не помню, но про wait знал и тогда. Тогда закрой.
Хорошо.