【发布时间】:2019-09-09 02:54:25
【问题描述】:
这是一个用于为项目升级 JavaScript 包的 fish 函数。奇怪的是,它在一次迭代后终止,退出状态为 0。为什么?
function yarn-upgrade-all --description "Upgrade JavaScript packages"
yarn outdated | sed '1,/^Package/d;/^Done/d' | awk '{print $1, $4}' | while read -l PACKAGE VERSION
echo
set_color brwhite
echo -n "==>"
set_color yellow
echo -n " "$PACKAGE
set_color brblue
echo -n " "$VERSION
set_color brwhite
echo -n " <=="
set_color normal
echo
echo
yarn upgrade --latest $PACKAGE
and yarn run test
and yarn run build
and git commit -am "Upgrade to "$PACKAGE" "$VERSION
or begin
set_color red
echo "last command exited with status $status" >&2
set_color normal
return 1
end
end
end
另一方面,第二个函数只包含一个存根主体,它会运行通过管道进入循环的所有包。
function yarn-upgrade-all-debug --description "Upgrade JavaScript packages"
yarn outdated | sed '1,/^Package/d;/^Done/d' | awk '{print $1, $4}' | while read -l PACKAGE VERSION
echo $PACKAGE $VERSION
end
end
鱼 --version
fish, version 3.0.2
【问题讨论】:
-
这些
yarn命令或git命令之一是否会占用标准输入的其余部分? -
@glennjackman 你是对的。为循环体中的命令将标准输入重定向到 /dev/null 可以修复它。您想添加您的评论作为答案吗?