管道值退出代码

时间:2016-12-12 17:24:17

标签: linux bash command-line

我正在寻找创建一个单行命令来执行某些操作并获取一个值(通常会输出),然后将其转换为退出代码(因此我可以触发后续步骤,以响应非零退出代码)。

例如,运行以下内容:

echo 5 | exit

然后有一个后续的echo $?输出5,我之前给出的值。

以上语法不起作用。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

假设:

cmd() { echo 5; }

对于字面答案:

cmd | (read -r rc && exit "$rc")

但是,您也可以运行:

( exit "$(cmd)" ) # parens create a subshell so we aren't exiting the main shell

答案 1 :(得分:1)

您可以使用命令替换:

( exit $(cmd) )

假设cmd返回0-255

之间的整数

一个例子:

$> ( exit $(echo 5) )
$> echo $?

5