首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >强制xargs在第一个命令错误时停止

强制xargs在第一个命令错误时停止
EN

Unix & Linux用户
提问于 2020-03-05 02:45:20
回答 1查看 812关注 0票数 4

我正在运行一个命令来查找目录中的所有make文件并运行make build

我想让xargs在第一个失败的make build上停止。

这是我到目前为止的命令。

代码语言:javascript
运行
复制
$ find . -name "Makefile" | xargs dirname | xargs -I {} make -C {} build

问题是,即使在xargs失败之后,make build也会继续运行。当我检查最终的状态代码时,我看到的是。

代码语言:javascript
运行
复制
$ echo $?
123

当我查看手册页时。上面是这么写的。

代码语言:javascript
运行
复制
123 if any invocation of the command exited with status 1-125

这是有道理的,因为make builds中的一些人在退出1点什么的时候失败了。

有办法让xargs在第一个make build错误时停止吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-03-05 03:18:10

XARGS(1):如果存在状态为255的命令调用,xargs将立即停止,而无需读取任何进一步的输入。

可以使用子subshell返回255

代码语言:javascript
运行
复制
find . -name "Makefile" | xargs dirname | \
  xargs -I {} sh -c 'make -C "$1" build || exit 255' sh {}
票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/571215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档