我正在尝试将一个值拆分为两个值。 值为:
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
谢谢
可以删除额外的移动部件以简化此代码的执行方式。
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 显示了其他内容