ksh, выполнить действие при достижении максимального значения цикла

Я хочу написать небольшой скрипт оболочки korn, который выполняет 5 тестов (ожидая некоторое время перед каждым), а затем, если все они не работают, выполняет действие.

Я смотрел на что-то вроде:

for i in {1..5} do "doMyTest" #it fills a variables "status" (but can unfortunately fails) if [ "$status" ]; then #if status is filled then we can leave the loop break fi sleep 3 #else wait some time before doing another try done if [ -z "$status" ]; then exit 1 fi ... then the rest of my program 

Вы хоть представляете, как я могу сделать это лучше? Это звучит немного избыточно …

3 Solutions collect form web for “ksh, выполнить действие при достижении максимального значения цикла”

 set -- while [ "$(($#>5))" -eq "-${#status}" ] do "test"; ${status:+":"} sleep 3 set '' "$@" done 

Если вы проверите по дополнению, вы можете часто делать много больше с одним тестом.

Вы можете избежать двойной проверки $status , выполнив это следующим образом:

 for i in {1..5} do "doMyTest" #it fills a variables "status" (but can unfortunately fails) if [ -n "$status" ]; then #if status is filled then we can leave the loop break elif [ $i -eq 5 ]; then exit 1 #all the tests failed, exiting fi sleep 3 #else wait some time before doing another try done 

Мой принятый ответ на SO: Если вы хотите только увидеть сбой, когда все тесты не пройдут? Когда вы можете пропустить другие тесты, когда один тест пройдет успешно, вы можете использовать

 test1 || sleep 3 && \ test2 || sleep 3 && \ test3 || sleep 3 && \ test4 || sleep 3 && \ test5 || exit 1 
  • Что делает «set -f» в Korn Shell?
  • ksh, если с несколькими условиями
  • Как пропустить файл с помощью awk
  • Какие правила определяют отношения между родителями и дочерними процессами, запущенными оболочкой через трубу?
  • Crontab Triple Redirect
  • Как выделить данную строку в данном месте?
  • Как найти старые каталоги в локальном каталоге, используя find в AIX?
  • Выполнять команду в текущей оболочке перед каждой подсказкой
  • Использование оболочки «: -» и преимущества
  • Сортировка всех каталогов на основе их размера
  • Как преобразовать общий формат XML-формата в формат свойств String из XML-файла с помощью скрипта ksh
  • Linux и Unix - лучшая ОС в мире.