Durchlaufen Sie ein Array von String-Arrays mit Leerzeichen

Ich versuche, ein Array zu durchlaufen, das andere Arrays enthält, und diese Arrays bestehen aus Zeichenfolgen mit Leerzeichen. Das Problem ist, dass ich den Abstand in der Zeichenfolge scheinbar nicht beibehalten kann. Die Zeichenfolge mit Leerzeichen wird entweder in mehrere Elemente unterteilt, wenn ich IFS in \ n ändere, oder alle Elemente des Arrays werden als 1 Element betrachtet, wenn ich IFS unverändert lasse. Hier ist ein Beispielcode:

#!/bin/sh
low1=("AA  QQ" "BB  LL")
low2=("CC" "DD")
low3=("EE" "FF")
high=(low1 low2 low3)

for high_item in ${high[@]}
do
   eval arrayz=\${$high_item[@]}
   #IFS=

Ausgabe:

AA
QQ
BB
LL
CC
DD
EE
FF

Wie Sie sehen, wurden die Elemente "AA QQ" und "BB LL" aufgeteilt.

Wenn ich die gesetzte Zeile auskommentiereIFS zu\n Ich bekomme folgendes:

AA QQ BB LL
CC DD
EE FF

Jetzt sind "AA QQ" und "BB LL" verkettet!

Gibt es eine Möglichkeit, diese Elemente so zu erhalten, wie sie ursprünglich sind? Die Ausgabe muss so aussehen:

AA QQ
BB LL
CC 
DD
EE 
FF
\n' for item in $arrayz do echo $item done done

Ausgabe:

AA
QQ
BB
LL
CC
DD
EE
FF

Wie Sie sehen, wurden die Elemente "AA QQ" und "BB LL" aufgeteilt.

Wenn ich die gesetzte Zeile auskommentiereIFS zu\n Ich bekomme folgendes:

AA QQ BB LL
CC DD
EE FF

Jetzt sind "AA QQ" und "BB LL" verkettet!

Gibt es eine Möglichkeit, diese Elemente so zu erhalten, wie sie ursprünglich sind? Die Ausgabe muss so aussehen:

AA QQ
BB LL
CC 
DD
EE 
FF

Antworten auf die Frage(2)

Ihre Antwort auf die Frage