Различные выводы при использовании перерыва в ударе

Я записал простой сценарий:

for DIR in /etc/*; do
    if [ "$DIR" == "/etc/dhcp" ]; then
        echo $DIR
        break
    fi
done

Это работает правильно, но если я использую break после fi это не генерирует желательный результат.

Каково различие между тем сценарием и этим?

for DIR in /etc/*; do
    if [ "$DIR" == "/etc/dhcp" ]; then
        echo $DIR
    fi
    break
done
-1
задан 16 December 2018 в 13:49

1 ответ

Проще говоря, если условие соблюдают, for цикл будет завершен в первом сценарии. Но во втором сценарии, for цикл завершится независимо от того, соблюдают ли условие или нет. Это for цикл будет выполняться однажды. Так, нет никакого преимущества для цикла во втором сценарии, так как результатами было бы то же.

Так, в конце первого сценария, значения DIR будет /etc/dhcp и вывод будет там. Но в случае второго сценария, значения DIR будет название папки, найденной сначала. Это может произойти, который это /etc/dhcp. В этом случае, если условие будет выполняться и Вы будете видеть вывод. Но если значение DIR что-то еще, затем не будет никакого вывода.

6
ответ дан 26 October 2019 в 20:26

Другие вопросы по тегам:

Похожие вопросы: