前言

AI Agent(尤其是代码/DevOps/系统操作型 Agent)在2025–2026年真实场景中比较常被用到的高级 bash 技巧,按实用频率和“让 Agent 更像活物”的程度粗略排序。

这些技巧大多让脚本更健壮、可重试、能自愈、可观测、可并行、可组合,也更适合被大模型生成和反复修改。

排名 技巧 / 特性 核心写法示例(精简) Agent 典型使用场景 为什么对 Agent 很重要
1 严格模式 + 安全失败 set -euo pipefail 几乎所有生产级脚本开头 防止隐蔽错误继续执行,模型生成代码时最容易漏掉
2 trap 捕获退出/信号做清理 trap 'cleanup' EXIT ERR SIGINT SIGTERM 临时文件、锁、docker容器、GPU占用释放 Agent 经常中途被杀,需要善后
3 带重试 + 指数退避的循环 `for i in {1…5}; do … && break sleep $((2**i)); done`
4 命名锁(flock)防止重复执行 `exec 200>/tmp/task.lock; flock -n 200 exit 1`
5 进程替换 + 命名管道(高级输入输出) diff <(cmd1) <(cmd2)
while read -r; do ...; done < <(find ...)
比较大文件、不想落地中间结果、实时流式处理日志 节省磁盘 & 内存,适合大上下文任务
6 高级参数展开 & 默认值/错误处理 ${VAR:?必须设置}
${OUT_DIR:=$(mktemp -d)}
${API_KEY?}
配置校验、临时目录自动创建 模型经常忘记判断变量是否存在
7 coproc + 后台双向通信 coproc LLM { python llm_pipe.py; }
echo "prompt" >&${LLM[1]}
Agent 里嵌套调用另一个 LLM 或长期运行的服务 实现“思考-行动-观察”循环
8 timeout + parallel 并行任务 timeout 300 bash subtask.sh &
wait -nxargs -P8
同时验证多个 checkpoint、并发下载分片、批量推理 显著缩短墙钟时间
9 动态生成并 source 函数库 source <(curl -s $LIB_URL)source utils.sh 复用公司内部工具函数、动态更新能力 Agent 可以自我升级工具箱
10 set -x + 结构化日志(可观测性) exec 5> >(ts '%Y-%m-%d %H:%M:%S' >&2)
BASH_XTRACEFD=5
所有线上长任务 事后排查 Agent 为什么卡死/错了
11 here document + 模板渲染 cat > config.yaml <<EOF
key: ${VALUE}
生成 yaml / toml / prompt 模板 Agent 经常需要参数化配置文件
12 数组 + 关联数组(bash 4+) declare -A status=([pod1]=Running [pod2]=Pending) 批量管理 k8s 资源、模型版本状态 结构化数据处理能力大幅提升
13 read -r -d ‘’ 多行捕获 body=$(</dev/stdin)IFS= read -r -d '' body 从 stdin 完整读取多行 prompt / 日志 处理大块文本不丢失换行
14 命令分组 + 状态保持({ } vs ( )) `{ critical && next rollback; }`
15 正则匹配 & BASH_REMATCH [[ $line =~ ^error:(.*)$ ]] && echo "${BASH_REMATCH[1]}" 解析各种非结构化日志、错误码提取 grep + sed 替代方案,更原生
16 shopt + 高级 shell 选项 shopt -s extglob nullglob globstar failglob 更安全的通配符、递归 glob 防止意外匹配或漏匹配
17 wait -n + 异步任务管理 for task in t{1..10}; do long_task & done; while wait -n; do :; done 批量 GPU 任务,控制并发 比 xargs -P 更精细控制
18 exec 重定向整个脚本的输入输出 exec > >(tee -a log.txt) 2>&1 一键记录所有输出 便于后续让 LLM 读懂发生了什么

特别推荐 Agent 开发者掌握的“组合技”

  • 自愈型循环 ≈ 重试 + trap + 状态文件
  • 看门狗模式 ≈ timeout + 心跳文件 + 杀掉僵尸进程
  • mini工作流引擎 ≈ coproc + while + case + flock
  • 模型友好输出printf '%s\n' "RESULT:$(jq -c . result.json)"(结构化、单行、易解析)
  • 自我诊断片段set -x; trap 'echo "Failed at line $LINENO"' ERR
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐