LINUX.ORG.RU

Цикл с постусловием в bash


0

0

Маны читал, ABSG читал, надеюсь, что недопонял. Существует ли конструкция цикла, где условие проверяется в конце, то есть цикл всегда выполнится хотя бы 1 раз? Или только while - do - done с заранее инициализируемой переменной?

★★★★

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

es=28
while [[ $es != 0 ]] || [[ es != 33 ]]
do
curl -O -C - http://какой-то.адрес -Y 1 -y 60
es=$?
done

P.S. Выбор форматирования неудобно близко к кнопке "поместить".

acheron ★★★★
() автор топика

Похоже, что цикла с постусловием в баше нету. =\

>Или только while - do - done с заранее инициализируемой переменной?

Почему _только_? Плохо absg читал, дружок. ;) Есть еще for и until. :D

anonymous
()
Ответ на: комментарий от anonymous

> Есть еще for и until. :D

Первый -- для заранее известного числа повторений (можно, конечно, с for (( expr1 ; expr2 ; expr3 )) ; do list ; done извратиться), второй -- аналог while, с обратным условием. И то и другое для меня достаточно сложно, чтобы напутать, поэтому и спросил нет ли чего проще.

acheron ★★★★
() автор топика
Ответ на: комментарий от sdio

> while [ 1 ]; do
> curl -O -C - http://какой-то.адрес -Y 1 -y 60
> [ $? -eq 0 -o $? -eq 33 ] && break
> done

Спасибо, про break я забыл. Тогда ещё один вопрос: можно ли
[ $? -eq 0 -o $? -eq 33 ]
заменить на
[[ $? == 0 ]] || [[ $? == 33 ]]
или в процессе выполнения 2-го выражения значение $? меняется?

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

>можно ли
>[ $? -eq 0 -o $? -eq 33 ]
>заменить на
>[[ $? !=0 ]] || [[ $? != 33 ]]

нельзя

>в процессе выполнения 2-го выражения значение $? меняется

придется $? присвоить переменной и ее (эту переменную) потом сравнивать

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

> нельзя

> придется $? присвоить переменной и ее (эту переменную) потом сравнивать

Тогда первый вариант проще. Ещё раз спасибо.

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

>...поэтому и спросил нет ли чего проще.

Смайлик не осилил? Не надо мне расказывать про циклы, я лишь пытался шутить. %)

anonymous
()
Ответ на: комментарий от anonymous

> я лишь пытался шутить. %)

Тогда попробуй понять мою шутку, которая была без смайлика :)

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