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

-1 command-line bash scripts

我写了一个简单的脚本:

for DIR in /etc/*; do
    if [ "$DIR" == "/etc/dhcp" ]; then
        echo $DIR
        break
    fi
done
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我breakfi它之后使用它不会产生理想的结果。

那个脚本和这个脚本有什么区别?

for DIR in /etc/*; do
    if [ "$DIR" == "/etc/dhcp" ]; then
        echo $DIR
    fi
    break
done
Run Code Online (Sandbox Code Playgroud)

Kul*_*lfy 6

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

因此,在第一个脚本的末尾,值为DIRwill/etc/dhcp并且输出将在那里。但是在第二个脚本的情况下, 的值DIR将是首先找到的文件夹的名称。它可能会发生/etc/dhcp。在这种情况下,将执行 if 条件,您将看到输出。但是如果 的值DIR是别的东西,那么就没有输出。