在 bash 中使用 break 时输出不同的结果

在 bash 中使用 break 时输出不同的结果

我写了一个简单的脚本:

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

简单来说,如果条件满足,for第一个脚本中的循环就会终止。但在第二个脚本中,for无论条件是否满足,循环都会终止。该for循环将执行一次。因此,第二个脚本中的 for 循环没有任何好处,因为结果是一样的。

因此,在第一个脚本的末尾, 的值DIR将是/etc/dhcp,并且会出现输出。但在第二个脚本的情况下, 的值DIR将是首先找到的文件夹的名称。可能是/etc/dhcp。在这种情况下,if 条件将被执行,您将看到输出。但如果 的值DIR是其他值,则不会有输出。

相关内容