我想从 NUL 分隔的输入(来自标准输入)创建一个 bash 数组。
这是一个例子:
## Let define this for clarity
$ hd() { hexdump -v -e '/1 "%02X "'; echo ;}
$ echo -en "A B\0C\nD\0E\0" | hd
41 20 42 00 43 0A 44 00 45 00
所以这是我的输入。
现在,如果不使用-a
ofread
命令,使用 NUL 可以正常工作:
$ while read -r -d '' v; do echo -n "$v" | hd; done < <(echo -en "A B\0C\nD\0E\0")
41 20 42
43 0A 44
45
我们得到正确的值。但我无法使用以下方法存储这些值-a
:
$ read -r -d '' -a arr < <(echo -en "A B\0C\nD\0E\0")
$ declare -p arr
declare -a arr='([0]="A" [1]="B")'
这显然不是我想要的。我想拥有:
$ declare -p arr
declare -a arr='([0]="A B" [1]="C
D" [2]="E")'
有没有办法去read -a
,如果它不起作用,为什么?你知道一个简单的方法来做到这一点(避免while
循环)吗?