в:Я не понимаю команду останова
#!/bin/sh
for var1 in 1 2 3
do
for var2 in 0 5
do
if [ $var1 -eq 2 -a $var2 -eq 0 ]
then
break 2
else
echo "$var1 $var2"
fi
done
done
выход:
1 0
1 5
, а затем сценарий останавливается.
как всегда, если аргумент перерыв команды (в 2) удаляется, выход:
1 0
1 5
3 0
3 5
То, что я спрашиваю, почему 3 0
и 3 5
печатаются, когда сценарий обусловлен не сломаться? Сценарий не печатал 2 0
и 2 5
и 3 0
и 3 5
должен сигнализировать перерыв, а также ...
'break 2' остановит внутренний и внешний контуры. 'break 1' aka' break' только остановит внутренний цикл (внешний цикл будет продолжен на следующей итерации). Чтобы остановить весь скрипт, используйте 'exit' –
спасибо за комментарий, но я до сих пор не понимаю, почему' 3 0' и '3 5' являются выходами? оба из них должны активировать перерыв, точно так же, как '2 0' и' 2 5' – KOOLz
. Ваше условие - '$ var1 -eq 2 -a $ var2 -eq 0', а' 3 0' не равно '2 0 '. Вы имели в виду использовать '-gt' для" больше чем "вместо этого? Если вы захотите остановить весь скрипт, достигнув '2 0' и не продолжите ничего, вы можете использовать' exit' (или 'break 2', чтобы закончить обе петли, как вы это сделали) –