break在括号中失效问题

今天发现了一个shell问题,break在脚本里面会失效,比如下面这个脚本:
#!/bin/bash
while : ;do
   ewch 1 &>/dev/null||(echo 2 && break)
   echo 3 && break
done

这个的执行结果是先打印2 和3 然后再break,我不确定是不是我的逻辑有问题,求各位大大指点下




答案由酷!学园 dark 大神提供:


��我� ... 我知道 ...

小括�是 "子程序"
大括�才延��前程序

另外 ..
你���行打在指令列 , �行後再用方向� "上" 叫出�看

while : ;do    ewch 1 &>/dev/null||(echo 2 && break);    echo 3 && break; done
小括���如一�指令一般

while : ;do ewch 1 &>/dev/null||{ echo 2 && break; };    echo 3 && break; done
前大括�後面要空格 , 後大括�前要分��行

你可能感兴趣的:(break失效)