在 bash 4.4.12 上使用 jq 1.5 和这个单行IFS=_ read -r -a a < <(jq -ncj '["a","b","c"][]+"_"') ; printf '%s\n' "${a[@]}"我得到一个正确分隔的输出
一种
乙
C
分别对于元素 a、b 和 c,但是如果我尝试使用空分隔符进行相同的操作,如下所示:IFS= read -r -a a < <(jq -ncj '["a","b","c"][]+"\u0000"') ; printf '%s\n' "${a[@]}"那么我将只得到一个包含
美国广播公司
为什么这不像预期的那样工作?
此外,如果你尝试IFS= read -r -d '' -a a < <(jq -ncj '["a","b","c"][]+"\u0000"') ; printf '%s\n' "${a[@]},你会惊讶地得到一个只有第一个“ a ”元素的数组:
一种
我的目标是找到一种方法,而不用任何类型的循环迭代元素。
编辑:**readarray -d**不是解决方案,因为我需要在 4.4 版之前的 bash 中运行一段代码