以下是将tab
- 拆分行拆分为数组的方法:
IFS=$'\t' read -a array < <(echo -e "a\tb\tc")
以下是如何将null
- 终止的行读入数组:
while IFS= read -r -d '' item
do array+=("$item")
done < <(echo -e "a\0b\0c\0")
现在,是否有可能将两者结合起来,并且有一个单线适合读取null
- 分割线到数组?
首先,将-r -d ''
与-a array
放在一起,并将IFS
设置为空,不起作用:
IFS= read -r -d '' -a array < <(echo -e "a\0b\0c")
因为array
将有1个项目:a
其次,这样的while
构造将null
- 分割线读成数组是有点不尽如人意的。如果最后一项不是null
,则放弃最后一项。解决方法是将最后一项附加到循环后的数组中,如下面的chepner所示。
while IFS= read -r -d '' item
do array+=("$item")
done < <(echo -e "a\0b\0c")
array+=("$item")
答案 0 :(得分:3)
没有,如果你不考虑单个while循环a&#34; one&#34; -liner。
while IFS= read -r -d '' item; do array+=("$item"); done < <(echo -e "a\0b\0c\0")
read
一次只读取一行输入,并且您使用-d ''
来定义一行。也就是说,你不是在对待一个\ 0b \ 0c&#34;作为单行输入,但由于多个行由空字节分隔。 readarray
4中引入的bash
命令并未提供指定要作为行分隔符考虑的内容的方法。