![在 bash 中使用 break 时输出不同的结果](https://linux22.com/image/1161725/%E5%9C%A8%20bash%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20break%20%E6%97%B6%E8%BE%93%E5%87%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BB%93%E6%9E%9C.png)
我写了一个简单的脚本:
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
是其他值,则不会有输出。