Frage zur while-read-Schleife

Frage zur while-read-Schleife

In einem Skript gefunden

{while read logfilename rest

do

LogFileSize=`wc -c $logfilename | awk '{print $1}'`

....

..........

done < /tmp/filelist
}

Ich bin nicht sicher rest, was es ist. Kann es jemand erklären?

Antwort1

In einer while readSchleife:

Die Zeile wird wie bei der Wortaufteilung in Felder aufgeteilt, wobei das erste Wort dem ersten NAMEN, das zweite Wort dem zweiten NAMEN usw. zugeordnet wird, wobeialle übrig gebliebenen Wörter, die dem letzten NAMEN zugeordnet sind.

Das bedeutet, wenn Ihre Eingabe etwa so lautet:

name1
name2 foo
name3

Und Sie haben nur Folgendes getan:

while read logfilename

Bei der zweiten Iteration logfilenamewürde Ihre Variable auf gesetzt 'name2 foo'.

Daher ist es relativ üblich, eine „Papierkorb“-Variable zu erstellen, um alle möglicherweise unerwünschten Eingaben zu sammeln. Diese Variable wird im Skript wahrscheinlich nicht verwendet, dient aber nur dazu, sicherzustellen, dass logfilenamekeine fehlerhaften Daten eingehen.

verwandte Informationen