Apenas para fechar esta questão e como aconselhado em comentários a razão que sua matriz parece "dividida" é por causa da maneira que você imprimir sua matriz e não porque sua matriz é dividida por ReadArray.
Quando você estiver em dúvida sobre o que realmente contém sua matriz, sugiro usar declare -p
(-p para impressão) ou printf
usando aspas duplas.
Na verdade, você deve sempre citar duas vezes suas variáveis, não importa se você as imprime ou apenas as usa em seus scripts.
Veja estes testes:
$ a="/media/root/persistence/file
/media/root/persistence/anotherfile
/media/root/persistence/(copy) file"
$ echo "$a"
/media/root/persistence/file
/media/root/persistence/anotherfile
/media/root/persistence/(copy) file
$ echo $a
/media/root/persistence/file /media/root/persistence/anotherfile /media/root/persistence/(copy) file
$ readarray -t y <<<"$a"
$ declare -p y
declare -a y=([0]="/media/root/persistence/file" [1]="/media/root/persistence/anotherfile" [2]="/media/root/persistence/(copy) file")
$ printf '%s\n' ${y[@]}
/media/root/persistence/file
/media/root/persistence/anotherfile
/media/root/persistence/(copy)
file
$ printf '%s\n' "${y[@]}"
/media/root/persistence/file
/media/root/persistence/anotherfile
/media/root/persistence/(copy) file
Como mencionado por don_crissti, você tem esse comportamento porque não citou duas vezes sua variável.
Para enfatizar um pouco a importância de sempre citar suas variáveis, veja este teste adicional:
$ b=" "
$ [ $b = " " ] && echo "ok" || echo "not ok"
bash: [: =: unary operator expected
not ok
$ [ "$b" = " " ] && echo "ok" || echo "not ok"
ok