¿Por qué cuando trato de escribir una función solo en una línea en el .bashrc
archivo,
list(){ ls -a }
Me sale el error?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of file
pero cuando lo escribo en varias líneas está bien?
list(){
ls -a
}
Respuestas:
Las funciones en
bash
se denominan esencialmente comandos compuestos (o bloques de código). Deman bash
:No se da ninguna razón, es solo la sintaxis.
Dado que la lista en la función de una línea dada no termina con una nueva línea o una
;
, sebash
queja.fuente
Hay una
;
necesidad al final de la función:Deberia trabajar.
La sintaxis de una definición de función para bash se especifica como
Tenga en cuenta que incluye un
;
que no forma parte delist
.Que
;
se requiera en este lugar es una especie de anomalía de sintaxis. No esbash
específico, es lo mismoksh
, pero no;
es obligatoriozsh
.fuente
El final de un solo comando (";") está implícito en la nueva línea. En la versión en línea
}
se analiza como un argumento para ells -a
comando no terminado . Lo que puedes ver si lo haces:¿Ves cómo el comando dentro de la declaración de función se traga la llave final?
fuente