Feldtrennung in der Korn- bzw. POSIX-Shell
Nach der Durchführung der Befehlssubstitution sucht die Korn-Shell in den Substitutionsergebnissen nach den in der Variablen IFS (Internal Field Separator) gefundenen Feldtrennzeichen. Werden Feldtrennzeichen gefunden, teilt die Shell die Substitutionen in separate Argumente.
Explizite Nullargumente
(
"" oder '') werden beibehalten, und implizite
Nullargumente (die sich aus Parametern ohne Werte ergeben) werden
verworfen. - Wenn der Wert von IFS ein Leerzeichen, Tabulatorzeichen
oder Zeilenvorschubzeichen oder nicht definiert ist, werden alle Folgen von Leerzeichen, Tabulatorzeichen und
Zeilenvorschubzeichen am Anfang oder Ende der Eingabe ignoriert. Innerhalb der Eingabe begrenzt eine beliebige
Folge dieser Zeichen ein Feld. Die folgende Eingabe trennt beispielsweise die Felder school
und days:
<Zeilenumbruch><Leerzeichen><Tabulatorzeichen>school<Tabulatorzeichen><Tabulatorzeichen>days<Leerzeichen> - Wenn der Wert von
IFS ungleich null ist, gelten die folgenden Regeln in der angegebenen Reihenfolge. Die Angabe IFS Leerzeichen bezieht sich auf alle Folgen (null oder mehr
Exemplare) von Leerzeichen im Wert der Variablen IFS.
Beispiel: Enthält die Variable IFS
Leerzeichen/Komma/Tabulatorzeichen, wird jede Folge von
Leerzeichen und Tabulatorzeichen als IFS-Leerzeichen
betrachtet.
- IFS-Leerzeichen am Anfang und Ende der Eingabe werden ignoriert.
- Jedes IFS-Zeichen in der Eingabe, bei dem es sich nicht um ein IFS-Leerzeichen handelt, dient zusammen mit einem darauffolgenden IFS-Leerzeichen als Begrenzer für ein Feld.
- Durch IFS-Leerzeichen mit einer Länge ungleich null wird ein Feld begrenzt.