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
read
hier (ichread
deklariere 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 Konzeptwhile
hier?Wenn das Here-Dokument selbst nach der Schleife kommt, wie wird es überhaupt von der Schleife beeinflusst? Ich meine, es kommt danach
done
und 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 EOF
Ich meine,
done
istdone
... Warum ist es wichtig, wenndone <<-EOF
es sich in derselben Zeile wie die Schleife befindet? Wenn ich mich richtig erinnere, hatte ich einen Fall, in dem einefor
Schleife einzeilig war und immer noch funktionierte.
read
Befehl, der dies tut." - Einige oder alle Shell-Skripte (und ihre rekursiv aufgerufenen Befehle) können aus der Standardeingabe lesen und die Schleifenaufrufe ändern.