.bash_profile: linha 260: erro de sintaxe próximo ao token inesperado `('

.bash_profile: linha 260: erro de sintaxe próximo ao token inesperado `('

Eu tenho a função bash:

WORKING_REACT_EXAMPLES="$HOME/tutorials/javascript/react/working-react-examples"
dualpush() { cd $WORKING_REACT_EXAMPLES; cmpushall "$1"; cd ..; cmpushall $1; cd $WORKING_REACT_EXAMPLES ;}

é semelhante às minhas outras funções. Quando tento obter .bashrc, recebo

$ src
-bash: /Users/cchilders/.bash_profile: line 260: syntax error near unexpected token `('
-bash: /Users/cchilders/.bash_profile: line 260: `dualpush() { cd $WORKING_REACT_EXAMPLES; cmpushall "$1"; cd ..; cmpushall "$1"; cd $WORKING_REACT_EXAMPLES ;}'

Shellcheck avisa para colocar aspas duplas em algo, mas não diz nenhum erro, então eu faço

dualpush() { cd "$WORKING_REACT_EXAMPLES"; cmpushall "$1"; cd ..; cmpushall "$1"; cd "$WORKING_REACT_EXAMPLES" ;}

e recebo o mesmo erro

O que está causando o erro de sintaxe? Obrigado

Responder1

Isso geralmente acontece quando o nome da função já está definido como umapelidocom parâmetros.

A substituição de alias acontece bem no início da análise do shell, portanto também afeta as declarações de funções (assim como outras coisas). Por exemplo, se você tivesse o seguinte...

alias dualpush="push; push --again"

dualpush() { push; push --again; }

... então seria expandido para:

push; push --again() { push; push --again; }

Se o alias original terminar com um comandosemparâmetros, as coisas ainda funcionam, mas a função está definida com o nome errado (entreoutrosurpresas potenciais!). Se, no entanto, o último comando nesse aliastemalguns argumentos, então a expansão não é mais reconhecida como uma declaração de função – em vez disso, ()aparece no meio de um argumento de linha de comando e é rejeitada pelo analisador.

Responder2

Depois de fechar o terminal, exatamente o mesmo comando funciona. O Mac apresenta falhas ao usar funções bash e, após obter o bashrc com dualpushcomentários, ele permanece no terminal. Reiniciando todo o terminal, o mesmo comando funciona. Eu não entendo esse mau comportamento, mas isso não acontece comigo no Ubuntu

informação relacionada