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

bash脚本调用子脚本仅显示stdout首词,如何输出全部内容?

问题解决方法

你的问题出在参数传递时未加双引号,导致bash将子脚本的输出按空格、换行等分隔符拆分成多个参数,error_return函数仅能拿到第一个单词。修改如下:

修改后的完整代码

error_return() {
    echo "Error received during '$1' execution. Log:"
    while IFS= read line; do
        echo " $line "
    done <<< "$2"
}

build_doc() {
    echo "Building documentation"
    docbuild=$(bin/doc-build.sh)
    if [ $? -eq 0 ]; then
        echo "Documentation built."
    else
        error_return "build_doc" "$docbuild"
    fi
}

关键修改点

  • 调用error_return时,将$docbuild改为"$docbuild":确保子脚本的全部输出作为单个完整参数传递,避免被bash分词拆分。
  • 在error_return的here-string中使用"$2":保证读取的是完整的输出内容,不会被拆分处理。
  • 移除多余的wait命令:$(...)会同步等待子脚本执行完毕,wait在此处无实际作用。

内容的提问来源于stack exchange,提问作者Frank C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:40:42