在Bash Shell中设置命令退出码:寻求标准输出转退出码的简化方法
更简便的实现方式
简化子shell写法
你可以把原命令简化成:
bash -c 'exit "$(command)"'
用单引号替代$'...',写法更简洁,同时还能避免特殊字符被当前shell提前解析的问题。如果是在当前shell环境下执行(不介意当前shell退出),直接写:
exit "$(command)"
就能完成需求。
用xargs快速传递退出码
如果你的命令只会输出单个数字,还可以用xargs配合true命令实现:
command | xargs true
true命令在bash等主流shell中支持接收一个数字参数作为退出码,xargs会把前序命令的输出传递给它,最终就用这个数字作为退出码。不过这个方法的兼容性稍差,POSIX标准的true不一定支持参数。
定义快捷函数(适合频繁使用)
如果需要多次执行这类操作,可以定义一个简短的shell函数:
ret() { exit "$("$@")"; }
之后只需运行ret your-command,就能自动把目标命令的输出作为当前shell的退出码,用起来非常顺手。
内容的提问来源于stack exchange,提问作者Felipe Sierra
相关产品推荐
相关产品推荐

