在下面的代码我期望while
循环来为输入build.cfg
文件中的每个匹配线执行三次,一次。这实际上是在什么不发生,但只有当我注释掉的情况下块的胆量 - 即开始(mkdir work ...
和(cd product ...
的子shell。bash的读循环过早EOF
当如下图所示执行,循环只执行一次(BUILDTYPE == build
)
当与-x运行,很明显的是,外壳环回和执行read
,但得到EOF,因为没有错误,继续执行setStatus
行。
显然,一些在子shell与外管道文件描述符的干扰。有人可以解释为什么会发生这种情况吗?
egrep "^\s*$BRANCH" $ETC/build.cfg | (while read BRANCH TARGET SVNSRC SVNTAG BUILDTYPE DISTTYPE DISTARGS
do
echo ----- $TARGET $BUILDTYPE
pushd $WORKSPACE/$BUILDUID
case $BUILDTYPE in
build)
echo ">>> BUILD"
(mkdir work
cp product/buildcontrol/buildConfig_example.xml work/defaultBuildConfig.xml
cd product
./build installer-all)
;;
tma)
echo ">>> TMA"
(cd product
./build -f ..${SVNTAG}build.xml)
;;
*)
;;
esac
popd
done)
setStatus 3
由于