Warum, wenn ich versuche, eine Funktion nur in einer Zeile in eine .bashrc
Datei zu schreiben ,
list(){ ls -a }
Bekomme ich fehler?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of file
aber wenn ich es mehrzeilig schreibe ist es ok?
list(){
ls -a
}
Antworten:
Funktionen in
bash
werden im Wesentlichen zusammengesetzte Befehle (oder Codeblöcke) genannt. Vonman bash
:Es gibt keinen Grund, es ist nur die Syntax.
Da die Liste in der angegebenen einzeiligen Funktion nicht mit einem Zeilenumbruch oder einem abgeschlossen wird
;
,bash
klagt.quelle
Am
;
Ende der Funktion wird Folgendes benötigt:sollte arbeiten.
Die Syntax einer Funktionsdefinition für Bash wird als angegeben
Beachten Sie, dass es eine enthält
;
, die nicht Teil der istlist
.Dass das
;
an dieser Stelle erforderlich ist, ist eine Art Syntaxanomalie. Es ist nichtbash
spezifisch, es ist dasselbe fürksh
, aber es;
ist nicht erforderlich inzsh
.quelle
Das Ende eines einzelnen Befehls (";") wird durch die neue Zeile impliziert. In der Online-Version
}
wird als Argument der nicht abgeschlossenels -a
Befehl analysiert . Was Sie sehen können, wenn Sie tun:Sehen Sie, wie der Befehl in der Funktionsdeklaration die nachgestellte geschweifte Klammer verschluckt?
quelle