LINUX.ORG.RU

BASH прерывание вложенных циклов


0

0
#!/bin/bash
#Этот цикл прерывается
while true
do
  break
done

#Прерывается
while true
do
  while true
  do
    break 2
  done
done


#Не прерывается
while true
do
 echo "asdf" | while read some
 do
    echo $some
    break 2
 done
done


Подскажите пожалуйста как выйти из всех циклов в 3 случае?

Ответ на: комментарий от tux2002

в третьем примере цикл выполняется в дочернем шэле. из-за этого и не работает. избавься от пайпа - все заработает

ananas ★★★★★ ()
Ответ на: комментарий от tux2002

Можно и с пайпом. Просто вместо break пользуй что-то вроде exit 1. А сразу после done проверяй значение цикла

[[ $? -eq 1 ]] && break

Lego_12239 ★★ ()
Ответ на: комментарий от tux2002

перенаправления > и < работают только для файлов, не для вывода команд. для вывода используются пайпы (|)

ananas ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.