You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅当内层进程执行成功时将其输出作为参数传入其他进程

实现方案

该需求完全可以实现,核心逻辑是先捕获内层进程输出,校验退出码后再决定是否执行外层进程,不要直接把命令替换嵌套在外层命令参数里。

通用兼容写法(兼容所有POSIX标准Shell,包括bash、zsh、dash等)

先把内层进程的输出存入变量,再通过特殊变量$?拿到内层进程的退出码,判断为0(执行成功)后再调用外层进程:

output=$(./other_process)
if [ $? -eq 0 ]; then
  ./process --input "$output"
fi

简洁单行写法

如果不需要额外的错误分支处理,可以直接用&&连接逻辑,只有前一条命令执行成功(退出码为0)时才会执行后一条命令:

output=$(./other_process) && ./process --input "$output"

特殊场景适配

如果需要把内层进程的错误输出(stderr)也一起捕获作为参数,或者不想让内层进程的错误信息直接打印到终端,可以在捕获输出时把stderr重定向到stdout:

output=$(./other_process 2>&1) && ./process --input "$output"

注意事项:引用存储输出的变量时一定要加双引号,否则如果输出内容包含空格、换行、shell通配符,会被自动做词拆分、通配符展开,导致传参不符合预期。

不要尝试写./process --input $(./other_process)类的嵌套变体,这类写法无论内层进程是否执行成功,外层进程都会被启动,只是失败时传入的参数可能为空,无法满足拦截执行的需求。

内容的提问来源于stack exchange,提问作者jhourback

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:03:20