<Anterior | Contenido | Siguiente>
Cotizaciones faltantes
Si editamos nuestro script y eliminamos la cita final del argumento que sigue al primero
comando de eco:
#! / Bin / bash
# problema: secuencia de comandos para demostrar errores comunes número = 1
si [$ número = 1]; luego
echo "El número es igual a 1.
más
echo "El número no es igual a 1."
fi
#! / Bin / bash
# problema: secuencia de comandos para demostrar errores comunes número = 1
si [$ número = 1]; luego
echo "El número es igual a 1.
más
echo "El número no es igual a 1."
fi
Mira lo que pasa:
[yo @ linuxbox ~] $ problema
/ home / me / bin / problem: línea 10: EOF inesperado mientras buscaba coincidencias `" '
/ home / me / bin / problem: línea 13: error de sintaxis: final inesperado del archivo
[yo @ linuxbox ~] $ problema
/ home / me / bin / problem: línea 10: EOF inesperado mientras buscaba coincidencias `" '
/ home / me / bin / problem: línea 13: error de sintaxis: final inesperado del archivo
Genera dos errores. Curiosamente, los números de línea informados por los mensajes de error no son donde se eliminó la cita que faltaba, sino mucho más tarde en el programa. Si seguimos el programa después de la cita que falta, podemos ver por qué. golpear continuará buscando la cita de cierre hasta que encuentre una, lo cual hace, inmediatamente después de la segunda echo mando. Después, golpear se vuelve muy confuso. La sintaxis de la subsiguiente if El comando está roto porque el fi La declaración ahora está dentro de una cadena entre comillas (pero abierta).
En scripts largos, este tipo de error puede ser bastante difícil de encontrar. El uso de un editor con resaltado de sintaxis será de ayuda ya que, en la mayoría de los casos, mostrará cadenas entre comillas de una manera distinta a otros tipos de sintaxis de shell. Si una versión completa de empuje está instalado, el resaltado de sintaxis se puede habilitar ingresando el comando:
: sintaxis activada
: sintaxis activada