Я записал простой сценарий:
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
Проще говоря, если условие соблюдают, for
цикл будет завершен в первом сценарии. Но во втором сценарии, for
цикл завершится независимо от того, соблюдают ли условие или нет. Это for
цикл будет выполняться однажды. Так, нет никакого преимущества для цикла во втором сценарии, так как результатами было бы то же.
Так, в конце первого сценария, значения DIR
будет /etc/dhcp
и вывод будет там. Но в случае второго сценария, значения DIR
будет название папки, найденной сначала. Это может произойти, который это /etc/dhcp
. В этом случае, если условие будет выполняться и Вы будете видеть вывод. Но если значение DIR
что-то еще, затем не будет никакого вывода.