Arreglar el error de sintaxis de Bash cerca de un token inesperado

La codificación en Linux Bash Terminal se ha convertido en una práctica predominante en el sector de la codificación. Los ingenieros de software y los estudiantes que aprenden el lenguaje de codificación se encuentran con varios errores. Si ha visto repetidamente errores como el error de sintaxis cerca del token inesperado ‘(‘ o el error de sintaxis de Bash cerca del token inesperado, puede intentar confiar en los métodos descritos en el artículo y convertirse en un codificador competente. Lea los métodos descritos en el artículo en el orden descrito y corregir los errores en las líneas de comando en su archivo.

Cómo corregir el error de sintaxis de Bash cerca de un token inesperado

Linux Bash es un intérprete de línea de comandos para el sistema basado en Linux y es un reemplazo para Bourne Shell o sh. Los archivos se nombran usando el formato .sh en las secuencias de comandos de Linux Bash. Si hay problemas de formato en el código del script de shell, es posible que se encuentre con un error de sintaxis. Si el error está cerca del carácter (, el shell le indicará el error en la línea y mostrará el error en la línea correspondiente. Dado que Linux Bash es un intérprete, se le devolverá la línea con el error en la Terminal y dejará de escanear el resto de los comandos en la secuencia de comandos. Por lo tanto, debe corregir el error en la línea de comando en particular y continuar con la siguiente para corregir el error de token inesperado en la secuencia de comandos de shell. Las causas de la sintaxis error cerca de token inesperado en Linux Bash se enumeran a continuación en esta sección de la siguiente manera:

  • Codificación con secuencias de escape: si ha escrito los códigos en secuencias de comandos de Bash, las secuencias de escape o las comillas en la secuencia de comandos pueden causar errores. Las secuencias de escape y las comillas deben escribirse en el formato correcto para corregir el error.

  • Sintaxis incorrecta en el archivo de codificación: la sintaxis en el código puede generar un error de sintaxis si el comando está escrito en una sintaxis incorrecta, como cambiar el orden de los bucles.

  • Uso incorrecto del comando: si no está utilizando el comando correctamente, como una asignación de valor incorrecta, es posible que tenga un error de sintaxis.

  • Sistema operativo incompatible en los sistemas: si el shell para el script de codificación no es compatible entre los sistemas Unix y DOS, es posible que tenga un error inesperado.

  • Problemas en el script de shell bash: los problemas que se ejecutan en el script de shell bash en el archivo copiado de otro sistema pueden generar un error de token inesperado.

Considere un archivo llamado ejemplo.sh creado en las secuencias de comandos de Linux Bash con las siguientes líneas de comando para fines explicativos. El archivo de ejemplo tiene la posibilidad de errores de sintaxis e incluye todos los comandos posibles que se pueden usar en el script de shell.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

Método 1: corregir errores manualmente en cada línea de comando

El primer método para corregir los errores es corregir el error de sintaxis manualmente en cada línea de comando del script. Los pasos para resolver los errores de sintaxis cerca de un token inesperado en las líneas de comando se describen en esta sección. El proceso para corregir el error de token inesperado en la Terminal se describe a continuación. Ejecute el archivo en la Terminal escribiendo el comando ./example.sh y presionando la tecla Enter.

2. Tenga en cuenta las líneas que tienen el error de token inesperado en las líneas de comando en el resultado a continuación.

3. Solucione el error en cada línea siguiendo los métodos que se describen a continuación individualmente y guardando el archivo.

4. Vuelva a ejecutar el archivo después de los cambios y verifique si el error de sintaxis se resuelve en el archivo.

Paso I: leer el contenido del archivo

El primer paso para solucionar el error de sintaxis en las líneas de comando es leer el archivo en la Terminal. SI hay problemas con el archivo, es posible que no pueda verlo. La práctica habitual de ver el archivo es ejecutar el archivo usando el comando ./example.sh pero no puede modificar el contenido del archivo. Las opciones para ver el contenido del archivo y modificar las líneas de comando para corregir el error de sintaxis cerca del token inesperado ‘(‘ se analizan a continuación.

Opción 1: Mediante Comando CAT

La primera opción es usar el comando cat para ver el archivo en el script de shell. Lea el contenido del archivo con el error de token inesperado usando el comando cat escribiendo el comando cat –v example.sh en la Terminal.

Nota 1: el ejemplo.sh se usa con fines explicativos y debe escribir el nombre del archivo que tiene el error de token inesperado.

Nota 2: El comando cat –v se usa para mostrar todos los caracteres invisibles que probablemente representen el retorno de carro o el espacio sin interrupción.

Opción 2: Mediante Comando VX

Si no puede usar el comando cat, puede intentar usar el comando vx para ver y modificar los comandos en el archivo siguiendo el paso que se indica a continuación. Escriba el comando sh –vx ./example.sh en la Terminal para abrir el archivo.

Opción 3: A través del comando od –a

3. Si hay algunos caracteres invisibles en las líneas de comando, puede usar el comando od –a para ver el archivo. Si el contenido del archivo no está visible en el archivo de código, puede intentar leer el archivo usando el comando od –a example.sh para modificar el código.

Paso II: Elimina los saltos de línea de Windows

Si hay saltos de línea de Windows en el script de shell, puede usar los comandos de la consola para eliminar los saltos de línea y copiar las líneas de código en un nuevo archivo para corregir el error.

Ingrese el siguiente comando en la Terminal para guardar el contenido del archivo en otro archivo llamado correctedexample.sh para eliminar los saltos de línea de Windows en la secuencia de comandos.

tr –d ‘r’ <example.sh> correctedexample.sh

Paso III: establecer permisos para el archivo recién creado

Debe establecer el permiso para el archivo recién creado para editar el archivo de modo que el archivo se pueda ejecutar en el shell. Escriba el comando como chmod 755 correctedexample.sh en la Terminal para proporcionar los permisos al archivo y ejecutarlo. Ahora puede ver el archivo corregido y corregir los problemas de formato y corregir el error de sintaxis cerca del token inesperado ‘(‘ en el archivo.

Paso IV: Dar formato al código en el archivo

El segundo paso es formatear las líneas de código individualmente y modificar las líneas de comando manualmente en el archivo. Las opciones para formatear el archivo para corregir el error de sintaxis cerca del token inesperado ‘(‘ se analizan a continuación en esta sección.

Opción 1: reemplazar comillas simples con comillas dobles

Si está utilizando comillas simples en las líneas de comando, debe modificar el comando reemplazando las comillas simples con comillas dobles para corregir el error de sintaxis. En el archivo example.sh, elimine las líneas de código que tienen ‘ y ‘ o las comillas simples en el comando y reemplace las comillas simples con comillas dobles o “ y ». Aquí, en el archivo de ejemplo, debe cambiar el código como str = «Primera línea de comando de» (archivo de ejemplo) «en el script»

Nota: Las comillas dobles son necesarias para los comandos de tipo de parámetro como str= “[(1,2),(3,4)]”.

Opción 2: agregue $ a las líneas de cadena

Si ha agregado valores de cadena a la secuencia de comandos, debe agregar $ a los valores de cadena para corregir el error de sintaxis en la secuencia de comandos. Agregue $ para las líneas de comando con los valores de cadena para corregir el error inesperado. Aquí, en el archivo de ejemplo, cambie la línea de comando como;

str= $ ‘First command line of ‘(example file)’ in the script’

Nota: si está utilizando $ en el valor de la cadena, puede omitir la secuencia de escape de la barra invertida ya que las líneas de comando se decodifican mediante el estándar ANSI C. En otras palabras, al usar $ para el valor de cadena, puede evitar el uso de comillas dobles en lugar de comillas simples en las líneas de comando.

Opción 3: convertir tabulaciones en espacios

Los espacios que ha dejado entre dos declaraciones de comando tienen que ser espacios en lugar de tabulaciones para corregir el error de sintaxis en el script. Si obtiene el error en Cygwin, puede intentar convertir las pestañas de los códigos en espacios para corregir el error. La línea de comando se da a continuación como;

do echo command1;       echo command2;             echo command3;             echo command4;             done

El comando anterior debe reescribirse como se muestra a continuación para corregir el error.

do echo command1; echo command2; echo command3; echo command4; done

Opción 4: usar caracteres de escape

Si usa un carácter bash, es importante usar un carácter de escape junto con el carácter bash para corregir el error de sintaxis. Los paréntesis o () son caracteres especiales bash en el archivo, por lo tanto, necesitará usar el carácter de escape o la barra invertida en la línea de comando para escapar de los caracteres normales para ejecutar el comando. El comando str= ‘Primera línea de comando de ‘(archivo de ejemplo)’ en el script’ no daría un error en la Terminal ya que se usa el carácter de escape.

Opción 5: Usar espacio entre caracteres

El script de shell reconoce los comandos y declaraciones en el script por los valores predeterminados. Debe garantizar el uso adecuado del espacio entre los caracteres para que el shell pueda identificar el comando dado en el script. El espacio es un carácter que se utiliza para diferenciar dos caracteres en la línea de comando. En el código, no hay espacio entre el si y [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; entonces el error se puede resolver como el comando de boletín de shell si el shell lo identifica.

Opción 6: use el separador de comandos para declaraciones

Los diversos comandos en el script de shell deben separarse en declaraciones para que la Terminal identifique comandos individuales. Debe usar un separador de comandos para corregir el error de sintaxis en Linux Bash. Las declaraciones en el comando deben estar separadas por un separador de comando como un punto y coma o un ; o una nueva línea presionando la tecla Enter. Por ejemplo, el comando en el código si [ $ day == “mon” ] entonces tiene que ser alterado como si [ $ day == “mon” ]; entonces para corregir el error. Dado que el punto y coma se utiliza como separador de comandos entre los caracteres [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; luego echo «mon»; else echo “no mon”; hecho; fi debe cerrarse en el orden correcto. Alterar el código como se muestra a continuación puede corregir el error de token inesperado ya que se corrige el orden de cierre de las declaraciones.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

Método 2: reescribir código

Si copió el código y lo pegó en un archivo nuevo en la Terminal, puede intentar volver a escribir el código manualmente para corregir el error. Los errores en el código se pueden corregir si ha escrito el código sin errores de formato en el script de shell. Esto se debe a que los caracteres ocultos y los problemas de formato en el editor de texto, como Microsoft Word, que podría haber usado para copiar y pegar el código pueden haber dado el error.

Método 3: Utilice el comando Dos2unix.exe

Si está utilizando un sistema operativo Unix, puede escribir códigos con el carácter de avance de línea como n para pasar a la siguiente línea del archivo. Sin embargo, si está utilizando un sistema operativo Windows, debe pasar a la siguiente línea en el código utilizando el retorno de carro y el avance de línea o el rn en el archivo. Si ejecuta el código escrito en el sistema operativo Windows en Cygwin, puede obtener el error de sintaxis cerca del token inesperado ‘(‘.

Para corregir el error, debe borrar los caracteres de retorno de carro utilizando la herramienta de línea de comandos de DOS a Unix como un convertidor de formato de archivo de texto. Escriba el siguiente comando como dos2unix.exe ejemplo.sh en la Terminal y podrá convertir el archivo al formato Unix.

***

El artículo ha discutido los métodos básicos para corregir el error de sintaxis de Bash cerca del token inesperado ‘(‘ en el script. Si está usando Linux Bash, puede usar los métodos explicados en esta sección para corregir el error de sintaxis de Bash cerca del token inesperado. Si ha leído el artículo completo y ha encontrado útil el contenido, por favor háganos saber sus sugerencias y consultas en la sección de comentarios.