Bash deklarativ definieren eine Liste, um auf zu schleifen

In Bash mache ich häufig Skripte, in denen ich eine Liste von Zeichenfolgen durchlaufe, die ich definiere.

z.B.

for a in 1 2 3 4; do echo $a; done

Ich möchte jedoch die Liste (vor der Schleife, um sie sauber zu halten) so definieren, dass sie Leerzeichen enthält und keine separate Datei enthält:

z.B. (ABER DAS WIRKT NICHT)

read -r VAR <<HERE
list item 1
list item 2
list item 3
...
HERE

for a in $VAR; do echo $a; done

Die erwartete Ausgabe oben (ich möchte):

list item 1
list item 2
list item 3
etc...

Aber Sie werden bekommen:

list
item
1

Ich könnte Arrays verwenden, müsste aber jedes Element im Array indizieren (BEARBEITEN Lesen Sie die Antworten unten, da Sie Arrays anhängen können. Ich wusste nicht, dass Sie das können).

Wie definieren andere Listen deklarativ in Bash, ohne separate Dateien zu verwenden?

Entschuldigung, ich habe vergessen zu erwähnen, dass ich die Liste im definieren möchteAnfang der Datei vor der for-Schleifenlogik

Antworten auf die Frage(5)

Ihre Antwort auf die Frage