当前位置: 首页
AI教程
一条脚本结合多步流水线与HereDoc实现全自动内容生产

一条脚本结合多步流水线与HereDoc实现全自动内容生产

热心网友 时间:2026-07-13
转载

多步流水线将多个命令调用串联成自动化生产流程,HereDoc通过cat命令以标准输入方式传递长文本prompt,避免引号嵌套引发的混乱,显著提升脚本可读性与可维护性,是处理长文本提示的有效方法,广泛应用于自动化脚本编写。

多步流水线 + HereDoc:一条 Shell 脚本实现全自动内容生产工作流

前两篇我们分别介绍了“单次调用”和“输出可解析”技巧,本篇将深入讲解如何把多个 Claude 调用串联起来,构建一条真正的自动化流水线,实现内容生产全流程脚本化。

多步流水线 + HereDoc:一条脚本完成全自动内容生产

HereDoc:优雅解决长 Prompt 的引号嵌套问题

当任务描述超过一行,且内部包含引号嵌套时,使用 -p "..." 方式极易出现引号冲突,阅读和维护都很痛苦:

# 引号嵌套导致难以阅读和维护claude -p "审查代码变更。规则:1. 检查类型声明;2. 禁止出现"TODO"标记;3. 检查"密钥"硬编码。" --allowed-tools "Read"

改用 HereDoc 方式则简洁清晰:

claude -p "$(cat <<'PROMPT'审查当前项目的代码变更。检查规则(按优先级):1. TypeScript 类型错误 —— 必须修复2. console.log 残留 —— 提交前全部删除3. 硬编码密钥/token —— 绝对禁止输出 JSON 数组:[{file, line, rule, issue, severity}]如果没有问题,输出空数组 []。只输出 JSON。PROMPT)" --allowed-tools "Bash,Read" --model haiku

语法非常直观:从 <<'标记' 开始,到单独一行的 标记 结束,中间内容原封不动传给命令。外层 $() 执行 cat 命令,结果自动填充到 -p 参数中。关键在于 'PROMPT' 的单引号,它能阻止 Shell 二次解析内部内容,确保提示词准确传递。

管道输入模式:任务指令也可以来自标准输入

之前的用法是“数据走管道,指令写 -p”。反过来同样可行——任务描述本身也可以通过管道传递:

# 以下三种写法效果完全一致# 1. 使用 -p 直接指定指令claude -p "把 Hello World 翻译成中文"# 2. 通过 echo 管道传递echo "把 Hello World 翻译成中文" | claude# 3. 使用 HereDoc 管道claude <<'EOF'读取 CLAUDE.md,列出所有关于代码质量的规则,按优先级排序。EOF

这种方式的优势在于,任务内容可以动态来自其他命令的输出。但有一个重要坑点:管道内容和 -p 不能同时使用——如果管道提供了内容,它会直接成为 prompt,-p 参数会被忽略。正确的做法是将动态内容手动拼接到 -p 字符串中:

# ❌ 错误:管道与 -p 混用,-p 被忽略cat ~/project/CLAUDE.md | claude -p "根据上面的规则审查代码"# ✅ 正确:通过变量将动态内容拼入 -pRULES=$(cat ~/project/CLAUDE.md)claude -p "根据以下规则审查代码。规则:$RULES" --allowed-tools "Read,Bash" --model haiku

多步流水线:将复杂任务拆解为可控步骤

单步完成一个复杂任务往往不够可靠——token 限制、中间结果无法审计、错误难以定位。拆分为多个步骤,每步结果落盘,整个过程清晰可控。

搜索资料列大纲写初稿去 AI 味┌──────────┐┌──────────┐┌──────────┐┌──────────┐│ claude -p││ claude -p││ claude -p││ claude -p││ WebSearch│───→│ --continue│───→│ --continue│───→│ --continue│└────┬─────┘└────┬─────┘└────┬─────┘└────┬─────┘ ▼ ▼ ▼ ▼research.jsonoutline.md draft.md final.md

数据传递有四种常用方式,根据场景灵活选择:

方式 写法 适用场景 注意事项
文件落盘 > /tmp/result.md,下一步 $(cat ...) 读取 数据量大、需要审计追溯 安全可靠,强烈推荐
$() 嵌入 RESULT=$(cat file); claude -p "...$RESULT" 数据量较小 需与 -p 配合使用
--continue 下一步加 --continue "$SID" 保持会话上下文 第一步必须先用 --session-id 创建
管道 echo "任务" | claude 单步简单任务 ⚠️ 管道内容会覆盖 -p,两者不可混用

完整示例:文章自动生产线

#!/bin/bash# 全自动内容生产流水线:搜索资料 → 列写大纲 → 生成初稿 → 去除 AI 痕迹TOPIC="Claude Code Hooks 入门"SID="article-$(date +%s)" # 唯一会话 ID,所有步骤共享上下文# 第一步:搜索相关资料(--session-id 命名该会话)echo "=== 开始搜索资料 ==="claude -p "搜索「$TOPIC」的 3 篇高质量文章。输出标题、URL、核心观点。JSON 格式。" --session-id "$SID" --allowed-tools "WebSearch" --model haiku > /tmp/step1-research.json# 第二步:生成文章大纲(--continue 延续上一步上下文)echo "=== 开始列写大纲 ==="RESEARCH=$(cat /tmp/step1-research.json)claude -p "根据以下资料,为「$TOPIC」生成文章大纲。结构包含:引言 + 3 个核心要点 + 总结。n资料:$RESEARCH" --continue "$SID" --allowed-tools "Read" --model haiku > /tmp/step2-outline.md# 第三步:撰写初稿echo "=== 开始撰写初稿 ==="OUTLINE=$(cat /tmp/step2-outline.md)claude -p "按以下提纲写一篇 1500 字的技术文章。要求使用短句,用通俗语言解释技术概念。n提纲:$OUTLINE" --continue "$SID" --allowed-tools "Read" > /tmp/step3-draft.md# 第四步:去除 AI 味(润色)echo "=== 开始去除 AI 痕迹 ==="DRAFT=$(cat /tmp/step3-draft.md)claude -p "请去掉以下文章中「值得注意的是」「综上所述」等 AI 套话,将长句拆成短句,被动语态改为主动语态。n文章:$DRAFT" --continue "$SID" --allowed-tools "Read" > /tmp/step4-final.mdecho "✅ 流水线执行完毕,最终文件:/tmp/step4-final.md"

每步的数据流转关系如下:

步骤 Claude 接收到的内容 数据传递方式
搜索 搜索指令 + 主题
大纲 大纲指令 + 上一步的搜索结果 $() 拼入 -p 字符串
初稿 写作指令 + 上一步的大纲 $() 拼入 -p 字符串
去 AI 味 润色指令 + 上一步的初稿 $() 拼入 -p 字符串
所有步骤 前面所有对话的完整上下文 --continue "$SID"

直接运行即可:

chmod +x ~/scripts/auto-article.sh~/scripts/auto-article.sh

Shell 函数封装:将长命令缩成一个词

虽然脚本已写好,但距离“随手就用”还有一步——把常用命令封装成简短函数。

# 将以下内容添加到 ~/.zshrc 中ask() { claude -p "$*" --allowed-tools "Read,WebSearch,WebFetch" --模型 haiku; }review() {local files=$(git diff HEAD --name-only 2>/dev/null | tr 'n' ' ')[ -z "$files" ] && { echo "无变更文件"; return; }claude -p "审查以下文件的变更,列出最严重的 3 个问题:$files" --allowed-tools "Bash,Read" --模型 haiku}

之后即可在终端中直接使用:

ask React Concurrent Mode 是什么review # 在当前仓库任意目录执行

这里有个关键点:必须使用函数 () {},而不能用 alias。因为 $(git diff ...) 需要在每次调用时动态执行,alias 在定义时就会固定结果,只有函数才能保证每次执行都实时计算当前变更。

来源:https://juejin.cn/post/7661118061970489386

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
手写Mini Cursor:Agent文件读写、命令执行与项目创建

手写Mini Cursor:Agent文件读写、命令执行与项目创建

基于ReAct循环构建的MiniCursorAgent,通过Node jsRuntime提供读文件、写文件、查看目录、执行命令四个工具,在本地工作区自主完成创建ReactTodoList项目、实现功能、添加样式动画等编程任务,模型根据工具结果循环决策。

时间:2026-07-13 16:15
一条脚本结合多步流水线与HereDoc实现全自动内容生产

一条脚本结合多步流水线与HereDoc实现全自动内容生产

多步流水线将多个命令调用串联成自动化生产流程,HereDoc通过cat命令以标准输入方式传递长文本prompt,避免引号嵌套引发的混乱,显著提升脚本可读性与可维护性,是处理长文本提示的有效方法,广泛应用于自动化脚本编写。

时间:2026-07-13 16:14
iOS设备上PlayWright MCP服务器的安装配置与使用详细指南

iOS设备上PlayWright MCP服务器的安装配置与使用详细指南

基于Appium的iOS设备自动化测试MCPServer,提供屏幕截图、元素点击及UI树获取功能,支持Stdio与SSE两种运行模式,可无缝接入Trae等支持MCP协议的AI客户端,所有工具共享同一Appium会话,避免重复启动开销,显著提升测试效率。

时间:2026-07-13 16:14
MCP Server开发入门与协议调试生产部署

MCP Server开发入门与协议调试生产部署

MCPServer开发需解决五个工程问题:多工具共享数据层;输入验证含枚举值、必填字段和业务规则;错误处理区分硬错误与软反馈;日志必须写入stderr避免破坏协议;Resources使LLM能动态获取上下文数据。以JiraServer为例,实现4个工具、1个资源和1个Prompt,覆盖完整测试用例。

时间:2026-07-13 16:14
机器学习基本术语详解与核心概念解析

机器学习基本术语详解与核心概念解析

机器学习以数据为基础,样本由属性构成特征向量。训练从数据中学习模型,有标记的样本用于监督学习(分类与回归),无标记的样本用于无监督学习(聚类)。泛化能力是衡量模型对新样本适用性的关键标准。

时间:2026-07-13 16:14
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜