Tengo función 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 ;}
Se parece a mis otras funciones. Cuando intento obtener .bashrc obtengo
$ 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 advierte que se deben citar dos veces algo, pero no dice ningún error, así que lo hago
dualpush() { cd "$WORKING_REACT_EXAMPLES"; cmpushall "$1"; cd ..; cmpushall "$1"; cd "$WORKING_REACT_EXAMPLES" ;}
y obtengo el mismo error
¿Qué está causando el error de sintaxis? Gracias
Respuesta1
Esto suele suceder cuando el nombre de la función ya está definido comoaliascon parámetros.
La sustitución de alias ocurre bastante temprano en el análisis del shell, por lo que también afecta las declaraciones de funciones (así como otras cosas). Por ejemplo, si tuviera lo siguiente...
alias dualpush="push; push --again"
dualpush() { push; push --again; }
...entonces se ampliaría a:
push; push --again() { push; push --again; }
Si el alias original termina con un comandosinparámetros, las cosas todavía funcionan pero la función está definida con el nombre incorrecto (entreotroposibles sorpresas!). Sin embargo, si el último comando en ese aliastienealgunos argumentos, entonces la expansión ya no se reconoce como una declaración de función; en cambio, ()
aparece en medio de un argumento de la línea de comandos y el analizador la rechaza.
Respuesta2
Después de cerrar la terminal, funciona exactamente el mismo comando. Mac tiene fallas al usar funciones bash y, después de obtener bashrc dualpush
comentado, permanece en la terminal. Al reiniciar toda la terminal, funciona el mismo comando. No entiendo este mal comportamiento, pero esto no me sucede en ubuntu