Por que quando tento escrever uma função em apenas uma linha no .bashrc
arquivo,
list(){ ls -a }
Eu recebo erro?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of file
mas quando eu escrevo em várias linhas está tudo bem?
list(){
ls -a
}
Respostas:
As funções em
bash
são essencialmente denominadas comandos compostos (ou blocos de código). Deman bash
:Não há motivo, é apenas a sintaxe.
Como a lista na função de linha única fornecida não termina com uma nova linha ou a
;
,bash
reclama.fonte
É
;
necessário no final da função:Deveria trabalhar.
A sintaxe de uma definição de função para bash é especificada como
Observe que ele inclui um
;
que não faz parte dolist
.O fato de
;
ser necessário neste local é uma espécie de anomalia de sintaxe. Não ébash
específico, é o mesmo paraksh
, mas não;
é necessáriozsh
.fonte
O final de um único comando (";") está implícito na nova linha. Na versão on-line
}
é analisada como um argumento para ols -a
comando não terminado . Que você pode ver se faz:Veja como o comando dentro da declaração de função engole a cinta à direita?
fonte