Skip to content

6.5 --print, -p - 打印响应而不进入交互模式

--print-p 标志允许 Claude Code 打印响应而不进入交互模式。这是程序化使用 Claude Code 的主要方式。

标志语法

bash


claude -p "query" [其他选项]

    bash


    claude --print "query" [其他选项]

## 功能描述

-p--print)标志会:

使用示例

基本用法

bash


claude -p "解释这个函数"

执行查询,打印结果,然后退出。

代码生成

bash


claude -p "创建一个快速排序算法"

生成快速排序算法代码,打印结果,然后退出。

结合输出格式

bash


claude -p "分析这个项目" --output-format json

以 JSON 格式输出分析结果。

处理管道内容

bash


cat logs.txt | claude -p "解释这些日志"

将日志文件内容通过管道传递给 Claude Code,请求解释,然后退出。

输出格式

-p 标志支持多种输出格式:

text 格式(默认)

bash


claude -p "查询内容"

输出纯文本格式的响应。

json 格式

bash


claude -p "查询内容" --output-format json

输出 JSON 格式的响应,便于程序解析。

stream-json 格式

bash


claude -p "查询内容" --output-format stream-json

输出流式 JSON,可以实时处理响应。

bash
## 使用场景

### 1\. 脚本自动化

    bash


    #!/bin/bash
    # 获取代码审查结果
    result=$(claude -p "审查 src/main.js")
    echo "$result"

在脚本中使用 Claude Code 进行代码审查。

bash
### 2\. CI/CD 集成

    yaml


    # GitHub Actions 示例
    - name: Code Review
      run: |
        review=$(claude -p "审查最近的代码变更")
        echo "$review"

在 CI/CD 流程中自动进行代码审查。

3. 批处理

bash


for file in *.js; do
  claude -p "优化 $file" > "${file%.js}.optimized.js"
done

批量处理多个文件。

4. 数据处理

bash


cat data.json | claude -p "提取关键信息" --output-format json

处理 JSON 数据并提取关键信息。

高级用法

包含部分流事件

bash


claude -p "复杂任务" --output-format stream-json --include-partial-messages

在输出中包含部分流事件,用于调试和实时处理。

限制代理轮数

bash


claude -p --max-turns 3 "执行任务"

限制非交互模式中的代理轮数,控制执行时间。

指定权限提示工具

bash


claude -p --permission-prompt-tool mcp_auth_tool "需要权限的任务"

指定 MCP 工具以在非交互模式中处理权限提示。

注意事项

  1. 非交互模式-p 标志不会进入交互模式,执行完查询后立即退出
  2. 输出格式 :建议使用 --output-format json 便于脚本解析
  3. 错误处理 :脚本中应该处理可能的错误和异常
  4. 资源限制 :长时间运行的任务可能需要调整超时设置
  5. API 限制 :频繁调用可能触发 API 速率限制

与交互模式的对比

特性交互模式打印模式(-p)

会话保持| 是| 否 多轮对话| 是| 否 上下文保持| 是| 否 脚本友好| 否| 是 自动化支持| 有限| 优秀 实时交互| 是| 否

最佳实践

  1. 使用 JSON 输出 :便于脚本解析和处理
  2. 错误处理 :在脚本中添加错误处理逻辑
  3. 超时设置 :为长时间运行的任务设置合理的超时
  4. 结果验证 :验证返回的结果是否符合预期
  5. 日志记录 :记录查询和结果,便于调试和审计

相关命令

  • claude:启动交互式 REPL
  • claude "query":使用初始提示启动 REPL
  • --output-format:指定输出格式
  • --input-format:指定输入格式

SDK 文档

有关程序化使用 Claude Code 的更多详情,请参阅 SDK 文档

基于 MIT 许可发布 | 永久导航