我写了一个简单的脚本:
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
是其他值,则不会有输出。