Hola, tengo una pequeña duda, cuando ejecuto el siguiente script shell en Linux me da error y sinceramente no encuentro el porqué:
#!/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.
#!/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.
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.
if [ "$variable" == "SI" ]; then
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.
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?
Probablemente sea por el error que se nos paso a todos antes...
Asi no se usa read.
read $variable
Con read no tenes que anteponer el "$" en la variable
read variable
--
Como regla general (creo). Nunca se usa "$" en una variable cuando esta se esta creando/inicializando.
a mi me funciono de esta manera
#!/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.