我以前从来没有用过bash来做这么复杂的事情,所以请原谅非常简单的错误。
因此,我试图通过执行以下操作将diff的输出拆分为数组:
diffresult=$(diff <(jq . actualProp.json) <(jq . standardProp.json) | tr -d '<>-')
echo $diffresult #returns 2c2 "access": "Deny", "access": "Allow", 5c5 "destinationPortRange": "33899", "destinationPortRange": "3389", 8c8 "priority": 3009, "priority": 300,
#split diffresult into array
IFS=',' read -ra array <<< "$diffresult"
#check the length
echo "${#array[@]}" #returns 1
#loop through the array
for element in "${array[@]}"
do
echo "$element"
done
#returns 2c2我做错了什么,为什么我不能把差异的输出分割成一个数组?
发布于 2020-11-09 09:41:07
回波$diffresult
未引用的展开结果经历了分词展开。通常情况下,当您编写$时,它应该在"中。
读取-ra数组<<< "$diffresult“
read一直读到第一个换行符。然后,它在IFS上拆分一行,并将结果分配给参数。因此,read只读取第一行2c2。
您可能需要使用bash扩展和读取行:
readarray -t array <<<"$diffresult"https://stackoverflow.com/questions/64748758
复制相似问题