бесконечный цикл bash по 3 значениям - PullRequest
1 голос
/ 26 марта 2019

У меня есть 3 статических значения: aa, bb, cc.Я хочу зациклить их бесконечно с выходом.Написание простого цикла очень просто:

for i in aa bb cc; do 
   echo $i
done

Но я хочу перебирать их бесконечно, пока какое-то условие не станет мясным:

for i in aa bb cc; do 
   echo $i
   if [ somecondition ]; then
      doSomething
      break
   fi
done

somecondition зависит от внешних условий и от i.Это должно выглядеть как попытка сделать что-то с i до успеха.

Какой лучший способ сделать это?

1 Ответ

2 голосов
/ 26 марта 2019

Простой способ - поместить ваш код в бесконечный цикл:

while true; do
    for i in aa bb cc; do
        echo $i;
        if [ somecondition ]; then
            doSomething
            break 2
        fi
    done
done

Обратите внимание, что команда break теперь имеет аргумент 2.

man bash говорит:

    break [n]
        Exit from within a for, while, until, or  select
        loop.   If  n  is  specified, break n levels.  n
        must be >= 1.  If n is greater than  the  number
        of  enclosing  loops,  all  enclosing  loops are
        exited.  The return value is 0 unless n  is  not
        greater than or equal to 1.
...