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

如何用Shell按竖线分割带引号的HOUSE|CAR值为两个变量?

问题解决方法

问题根源

你的命令存在两个核心问题:

  1. jq默认输出带双引号的字符串(如"HOUSE|CAR"),双引号会让Shell将整个内容视为单一整体,IFS="|"无法对其分割;
  2. echo $(...)属于冗余写法,不仅无意义,还可能干扰Shell的分词逻辑。

修正后的命令

直接让jq输出无引号的原始内容,再用read按|分割:

IFS="|" read -r doc doc2 < <(callapi server:id | jq -r '.[].Documentation')

关键改动说明

  • jq -r:添加-r(raw output)参数,让jq输出不带双引号的原始字符串,得到HOUSE|CAR而非"HOUSE|CAR";
  • read -r:添加-r参数避免read转义输入中的反斜杠,提升命令安全性;
  • 移除冗余的echo $(...):进程替换< <(...)直接将jq的输出传递给read,无需额外处理。

验证结果

执行上述命令后,即可得到预期效果:

echo $doc
# 输出:HOUSE
echo $doc2
# 输出:CAR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:09