-bash: error de sintaxis cerca del token inesperado `;'

-bash: error de sintaxis cerca del token inesperado `;'

¿Cuál es el formato correcto para si entonces?
Probé muchas variedades.
¿Debería funcionar el formato en la línea de comando cuando no está en un programa?

$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token `;'

Respuesta1

Nadie explicó el error todavía.

Entraste:

if [1==2] then echo "y" fi;
;

La primera línea tenía una sintaxis perfectamente válida en lo que respecta al shell. Es de la forma:

if cmd args

En este caso, cmdse deriva de la expansión del [1==2]globo. [1==2]es un patrón global que se expande a la lista de archivos en el directorio actual cuyo nombre consta de un carácter 1o =un 2carácter.

Por ejemplo, si hay un archivo llamado 2en el directorio actual, se convierte en:

si 2 entonces repite fi;

Es decir, ejecute el comando 2con 4 argumentos: 2, y , como primer comando en la parte de una declaración.thenechofiifif/then/elif/else/fi

El error proviene de ese segundo ;en la segunda línea. Habría recibido el mismo mensaje de error al ingresarlo ;solo en la línea de comando. ;debe usarse para separar comandos, no se puede usar solo de esa manera.

Respuesta2

La forma correcta de la ifconstrucción bash es

if something; then command; fi

La forma correcta de lo que parece estar intentando hacer es

if [ 2 -eq 2 ]; then echo "y"; fi;

Los espacios son importantes en bash.

Respuesta3

Prueba este:

if [ 1 == 2 ]; then echo "y" ; fi

Y mejor uso -eq, a menos que quieras comparar 1 y 2 como cadenas.

Enlace útil:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

Respuesta4

El ==operador no existe en Bash. Es -eqal comparar números o =al comparar cadenas.

if [ 1 -eq 2 ]; then echo 'y'; fi

información relacionada