带有管道分隔符和 jq

问题描述 投票:0回答:1

我正在尝试将一个值拆分为两个值。 值为:

HOUSE|CAR

我也这样做:

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

但它给了我:

echo $doc
"HOUSE|CAR"
echo $doc2
<empty>

我怎样才能得到这些:

echo $doc
HOUSE
eccho $doc2
CAR

谢谢

bash shell jq
1个回答
0
投票

可以删除额外的移动部件以简化此代码的执行方式。

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

注:

  • -r
    参数传递给
    jq
    告诉它不要将内容转义为 JSON(防止输出开头和结尾出现
    "
    ,以及可能存在的其他转义字符)。
  • -r
    参数传递给
    read
    可以防止它在应该将反斜杠作为数据添加到结果中时消耗反斜杠。
  • IFS='|'
    设置在与运行 read
     相同的行
    上,这样我们仅更改
    read
    命令的 IFS 值,而不是更大的 shell。
  • 删除
    echo $(...)
    可以避免为什么 printf 比 echo 更好?中描述的一系列错误,以及 我刚刚分配了一个变量,但 echo $variable 显示了其他内容
  • 中的错误
© www.soinside.com 2019 - 2024. All rights reserved.