我正在寻找创建一个单行命令来执行某些操作并获取一个值(通常会输出),然后将其转换为退出代码(因此我可以触发后续步骤,以响应非零退出代码)。
例如,运行以下内容:
echo 5 | exit
然后有一个后续的echo $?
输出5
,我之前给出的值。
以上语法不起作用。有没有办法实现这个目标?
答案 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