Ich habe diese Kombination aus while-Schleife und hier-Dokument, die ich in Bash 4.3.48 (1) ausführe, und ich verstehe ihre Logik überhaupt nicht.
while read file; do source ~/unwe/"$file"
done <<-EOF
x.sh
y.sh
EOF
Meine Frage besteht aus folgenden Teilen:
Was macht das
readhier (ichreaddeklariere eine Variable immer und weise ihren Wert interaktiv zu , aber mir fehlt, was sie hier tun soll).Was bedeutet das
while read? Woher kommt das Konzeptwhilehier?Wenn das Here-Dokument selbst nach der Schleife kommt, wie wird es überhaupt von der Schleife beeinflusst? Ich meine, es kommt danach
doneund nicht innerhalb der Schleife. Wie ist also die tatsächliche Assoziation zwischen diesen beiden Strukturen?Warum scheitert das?
while read file; do source ~/unwe/"$file" done <<-EOF x.sh y.sh EOFIch meine,
doneistdone... Warum ist es wichtig, wenndone <<-EOFes sich in derselben Zeile wie die Schleife befindet? Wenn ich mich richtig erinnere, hatte ich einen Fall, in dem eineforSchleife einzeilig war und immer noch funktionierte.
readBefehl, der dies tut." - Einige oder alle Shell-Skripte (und ihre rekursiv aufgerufenen Befehle) können aus der Standardeingabe lesen und die Schleifenaufrufe ändern.