Error en script en Linux

Iniciado por Straufen, 6 Abril 2013, 05:25 AM

0 Miembros y 1 Visitante están viendo este tema.

Straufen

Hola, tengo una pequeña duda, cuando ejecuto el siguiente script shell en Linux me da error y sinceramente no encuentro el porqué:


Código (bash) [Seleccionar]
#!/bin/bas
echo "SI para ejecutar, no para salir
read $variable
if ["$variable" == "SI"] then
echo "SI funciona"
else
echo "No, salir"
fi


Cuando lee el teclado e ingreso SI o no cualquier cosa, tira el siguiente error:
línea 6 error: error sintáctico cerca del elemento inesperado ○`else'
línea 6: else

No encuentro el erro sinceramente no veo nada malo.

xustyx

Código (bash) [Seleccionar]

#!/bin/bash
echo "SI para ejecutar, no para salir"
read $variable
if ["$variable" == "SI"]; then
echo "SI funciona"
else
echo "No, salir"
fi


Te dejaste la h del bash.
Cerrar las comillas del segundo echo.
Y el punto y coma despues de la condicion de la variable.

No lo he probado pero creo que ahora te funcionara...

Echale un vistazo antes de postear por que son fallos gordos que con el nano creo que ya te sale en colorines y tal para evitar estos errores.

-Myx-

Los espacios en los corchetes.

"[" es lo mismo que "test" para bash, es decir es como otro comando mas...por lo que necesita espacio despues de "["

Y necesita que su ultimo argumento sea "]", por lo que necesita espacio antes de este.

Código (bash) [Seleccionar]
if [ "$variable" == "SI" ]; then

Straufen

Cita de: -Myx- en  6 Abril 2013, 08:43 AM
Los espacios en los corchetes.

"[" es lo mismo que "test" para bash, es decir es como otro comando mas...por lo que necesita espacio despues de "["

Y necesita que su ultimo argumento sea "]", por lo que necesita espacio antes de este.

Código (bash) [Seleccionar]
if [ "$variable" == "SI" ]; then

En efecto, eso era el error. Por cierto lo de bash si está bien en el script cuando lo pasé aquí al foro me lo comí

De cualquier forma, tengo ahora otro problema. Resulta que ejecuto el script y a la hora de leer la entrada de datos, escribo SI para probar que sirve el echo "Funciona el SI" pero ejecuta el echo del else, no importa si pongo SI, Si, si, sI igual me toma como falsa la comparación de $variable con SI y me tira el echo del else. ¿Cómo corrijo?

-Myx-

#4
Probablemente sea por el error que se nos paso a todos antes...

Asi no se usa read.
Código (bash) [Seleccionar]
read $variable

Con read no tenes que anteponer el "$" en la variable
Código (bash) [Seleccionar]
read variable

--

Como regla general (creo). Nunca se usa "$" en una variable cuando esta se esta creando/inicializando.

dato000

a mi me funciono de esta manera

Código (bash) [Seleccionar]

#!/bin/bash

echo "SI para ejecutar, no para salir"

read variable

if [ "$variable" = 'SI' ]; then

   echo "SI funciona"

else

    echo "No, salir"

fi


Pensaba que al ser un script "bash" no funcionaria si lo guardaba con extension ".sh" pero funciono sin problemas.