--print / -p 参数
打印响应而不进入交互模式
概述
--print 或 -p 标志允许 Claude Code 打印响应而不进入交互模式。这是程序化使用 Claude Code 的主要方式。
标志语法
claude -p "query" [其他选项]或
claude --print "query" [其他选项]使用示例
基本用法
claude -p "解释这个函数"执行查询,打印结果,然后退出。
代码生成
claude -p "创建一个快速排序算法"生成快速排序算法代码,打印结果,然后退出。
结合输出格式
claude -p "分析这个项目" --output-format json以 JSON 格式输出分析结果。
处理管道内容
cat logs.txt | claude -p "解释这些日志"将日志文件内容通过管道传递给 Claude Code,请求解释,然后退出。
输出格式
-p 标志支持多种输出格式:
text 格式(默认)
claude -p "查询内容"输出纯文本格式的响应。
json 格式
claude -p "查询内容" --output-format json输出 JSON 格式的响应,便于程序解析。
stream-json 格式
claude -p "查询内容" --output-format stream-json输出流式 JSON,可以实时处理响应。
使用场景
脚本自动化
#!/bin/bash
# 获取代码审查结果
result=$(claude -p "审查 src/main.js")
echo "$result"在脚本中使用 Claude Code 进行代码审查。
CI/CD 集成
# GitHub Actions 示例
- name: Code Review
run: |
review=$(claude -p "审查最近的代码变更")
echo "$review"在 CI/CD 流程中自动进行代码审查。
批处理
for file in *.js; do
claude -p "优化 $file" > "${file%.js}.optimized.js"
done批量处理多个文件。
数据处理
cat data.json | claude -p "提取关键信息" --output-format json处理 JSON 数据并提取关键信息。
高级用法
包含部分流事件
claude -p "复杂任务" --output-format stream-json --include-partial-messages在输出中包含部分流事件,用于调试和实时处理。
限制代理轮数
claude -p --max-turns 3 "执行任务"限制非交互模式中的代理轮数,控制执行时间。
指定权限提示工具
claude -p --permission-prompt-tool mcp_auth_tool "需要权限的任务"指定 MCP 工具以在非交互模式中处理权限提示。
注意事项
| 注意事项 | 说明 |
|---|---|
| 非交互模式 | -p 标志不会进入交互模式,执行完查询后立即退出 |
| 输出格式 | 建议使用 --output-format json 便于脚本解析 |
| 错误处理 | 脚本中应该处理可能的错误和异常 |
| 资源限制 | 长时间运行的任务可能需要调整超时设置 |
| API 限制 | 频繁调用可能触发 API 速率限制 |
与交互模式的对比
| 特性 | 交互模式 | 打印模式(-p) |
|---|---|---|
| 会话保持 | 是 | 否 |
| 多轮对话 | 是 | 否 |
| 上下文保持 | 是 | 否 |
| 脚本友好 | 否 | 是 |
| 自动化支持 | 有限 | 优秀 |
| 实时交互 | 是 | 否 |
最佳实践
- 使用 JSON 输出:便于脚本解析和处理
- 错误处理:在脚本中添加错误处理逻辑
- 超时设置:为长时间运行的任务设置合理的超时
- 结果验证:验证返回的结果是否符合预期
- 日志记录:记录查询和结果,便于调试和审计
相关命令
claude:启动交互式 REPLclaude "query":使用初始提示启动 REPL--output-format:指定输出格式--input-format:指定输入格式