BASH Shell Бесконечный цикл с IF ELSE Уставом - PullRequest
2 голосов
/ 04 ноября 2011

Хорошо, я знаю, что задал похожий вопрос, я понимаю, как сделать бесконечный цикл:

while [ 1 ]
do
    foo
    bar
        then
sleep 10
done

Но если я хочу запустить несколько (довольно много) операторов IF ELSE в этом циклекак бы заставить скрипт продолжать цикл после того, как они закончили, как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 04 ноября 2011
while :; do
    if cond1; then
        whatever
    elif cond2; then
        something else
    else
        break
    fi
done
  1. Вы делаете бесконечный цикл, используя while true или используя более короткий псевдоним true :.[ 1 ] неоправданно сложно и не то, что вы думаете ([ 0 ] тоже верно!).Помните, что условия в if и while являются произвольными командами, чей статус выхода (ноль = истина, ненулевой = ложь) используется в качестве значения условия, а [ является просто псевдонимом для специальной команды test (обе встроенныев большинстве оболочек, но это не обязательно).
  2. Любая конструкция оболочки допускается между do / done, включая условные выражения, дополнительные циклы и случаи.
  3. Использование break для завершения внутреннего цикла изнутри (как и большинство других языков).
0 голосов
/ 01 ноября 2013

Исправлена ​​ошибка в корпусе Chown, добавлен тормоз для завершения цикла. Исправлено

while [ 1 ]
do
    if [ some test ]
    then
        some command
    brake
    else
        other cmd
    fi
sleep 10
done
0 голосов
/ 04 ноября 2011

Если в bash просто: if [ some test ]; then some_command; fi:

while [ 1 ]
do
    if [ some test ]
    then
        some command
    else
        other cmd
    fi
sleep 10
done

Руководство по созданию сценариев Bash

...