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

Shell脚本处理接口返回JSON字段时如何正确添加自定义前缀

实现目标的解决方案

问题根因

输出异常来自两个问题:

  • 调用jq .field提取字段时,jq默认会给字符串类型的输出包裹双引号,因此/root/file.txt中存储的内容本身自带首尾双引号
  • 拼接变量时你没有在prefix和val之间添加空格,导致前缀和原值直接连在一起

最优解决方案(无需额外编写file2.sh)

直接修改crontab任务,借助jq原生能力一步完成前缀拼接和输出格式处理:

* * * * * /root/file.sh | jq -r '"start " + .field' > /root/file.txt 2>&1

参数说明:

  • -r参数代表输出原始字符串,会自动去掉jq默认添加的外层双引号
  • 直接在jq语句中完成前缀拼接,额外加的空格可以保证前缀和字段值之间的分隔
  • 执行后/root/file.txt中存储的内容就是你预期的start value from file.txt,如果需要外层包裹双引号,修改jq语句为jq -r '"\"start " + .field + "\""'即可

如果你需要保留原有file2.sh的处理流程

修改file2.sh的代码,先去除读取内容的首尾引号,再添加空格拼接:

prefix="start"
# 读取文件并去除首尾双引号
val=$(sed -e 's/^"//' -e 's/"$//' /root/file.txt)
# 拼接时添加空格
concat="${prefix} ${val}"
# 如果需要外层包裹双引号,使用echo "\"${concat}\""
echo ${concat}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:06:06