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

Google Colab与Bash中字符串变量拼接及curl命令变量替换问题

解决curl命令中替换文件内容为变量的JSON格式问题

你的问题出在JSON格式错误和shell引号处理不当:你给documentContent的值额外套了一层双引号,导致实际发送的JSON里该字段的值是带引号的字符串(比如"Insulin..."),不符合JSON规范,服务器无法正确解析,因此返回空结果。

以下是三种可行的解决方案:

方案1:直接修正引号与转义

调整shell引号和JSON的双引号转义,确保生成合法的JSON:

!text1=$(cat textfile.txt)
!curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data "{
    \"nlpService\": \"projects/PROJECT_ID/locations/LOCATION/services/nlp\",
    \"documentContent\": \"$text1\"
}" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"
  • 整个JSON用shell双引号包裹,内部JSON的双引号用\转义,保证shell不会提前解析这些引号
  • 变量$text1直接在双引号内展开,生成符合JSON规范的字符串值

方案2:用jq生成合法JSON(推荐)

如果文本包含特殊字符(引号、换行等),手动转义容易出错,用jq自动构造JSON更可靠:

!text1=$(cat textfile.txt)
!curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data "$(jq -n --arg content "$text1" '{
    nlpService: "projects/PROJECT_ID/locations/LOCATION/services/nlp",
    documentContent: $content
}')" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"
  • jq会自动处理$text1中的特殊字符,确保生成的JSON完全符合规范
  • --arg content "$text1"将文本内容传入jq,避免直接拼接的风险

方案3:使用Here-Doc传递数据

用here-doc写法更直观,适合内容较长的JSON:

!text1=$(cat textfile.txt)
!curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  --data @- <<EOF
{
  "nlpService": "projects/PROJECT_ID/locations/LOCATION/services/nlp",
  "documentContent": "$text1"
}
EOF
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"
  • --data @-表示从标准输入读取数据
  • Here-Doc内的变量$text1会被正确展开,写法清晰易维护

内容的提问来源于stack exchange,提问作者Sunny League

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:15:23