Pourquoi, quand j'essaie d'écrire une fonction sur une seule ligne du .bashrc
fichier,
list(){ ls -a }
J'ai une erreur?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of file
mais quand je l'écris en multi ligne c'est ok?
list(){
ls -a
}
Réponses:
Les fonctions dans
bash
sont essentiellement appelées commandes composées (ou blocs de code). Deman bash
:Il n'y a aucune raison donnée, c'est juste la syntaxe.
Puisque la liste dans la fonction une ligne donnée ne se termine pas par une nouvelle ligne ou une
;
, sebash
plaint.la source
Il y a un
;
besoin à la fin de la fonction:devrait marcher.
La syntaxe d'une définition de fonction pour bash est spécifiée comme suit:
Notez qu'il inclut un
;
qui ne fait pas partie de lalist
.Le fait qu'il
;
soit nécessaire ici est en quelque sorte une anomalie de la syntaxe. Ce n'est pasbash
spécifique, c'est la même chose pourksh
, mais ça;
n'est pas obligatoire danszsh
.la source
La fin d'une commande unique (";") est impliquée par la nouvelle ligne. Dans la version en ligne
}
est analysé comme un argument de lals -a
commande non terminée . Ce que vous pouvez voir si vous le faites:Vous voyez comment la commande à l'intérieur de la déclaration de fonction engloutit l'accolade suivante?
la source