Problema con While En Script de Ubuntu (Resuelto)

Iniciado por Aitorseven, 18 Mayo 2018, 19:31 PM

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

Aitorseven

Hola! que tal! soy nuevo en la página.
Estoy estudiando grado de informática y estamos viendo scripts en ubuntu, el cual tengo un problema con un while
Os dejo el script
Muchas gracias de antemano y un cordial saludo :D


#!/bin/bash
usuario=$(whoami)
fecha=$(date)

while [ $question0 == "s" ]; do

echo "Hola $usuario ¿Que desea que haga?"

echo "1 -Dime que hora es"
echo "2 -Activame Super Usuario (Requiere Password)"
echo "3 -Creame una carpeta (Se le pedira nombre de la carpeta a crear)"
read i
case $i in

       1)
               echo "Dia| Mes| Hora| Año   $fecha"
               echo "¿Desea hacer otra cosa? S/N"
               read question0
                       exit
                       ;;



       2)
               echo "Le pediremos la contraseña de Super Usuario"
               echo "¿Esta de acuerdo S/N?"
               read question1
                       if [ $question1 == "s" ]
                               then
                                       sudo su
                                       else
                                               echo "No ha seleccionado " S ""
                                                       exit
                       fi
                                                       ;;



       3)
               echo "Se le pedira que introduzca un nombre para el directorio"
                       read dir
                               echo "A escogido $dir"
                               echo "¿Esta seguro? S/N"
                               read question2
                                       if [ $question2 == "s" ]
                                               then
                                                       mkdir $dir
                                                       exit
                                       fi
                                                       ;;
esac
done

animanegra

por de pronto no veo el done; al final.

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.

Aitorseven

Ay perdón al copiar el texto no copie
"done"
lo tengo puesto después de "esac"
PD: Se me olvido redactar tambien que cuando ejecuto el script me da error de
"se esperaba un operador unario"

dariodr01

Hola, el error esta en que no has inicializado la variable question0.

Aitorseven

Hola buenos dias,
El script yo queria que el while sirva para inizializar otra vez todo el proceso desde el principio preguntando al usuario con un read si desea realizar otra tarea disponible.

Hay alguna forma de iniciar la variable question0 desde el principio?
Gracias

animanegra

Dos opciones:

1 entrecomilla la variable $question0 dentro del while, cuando no tenga valor será el string vacio luego ya no tendrás solo un operador y no habrá error. (creo que es la opcion buena por si el usuario da un intro a la hora de contestar a la pregunta)

2 antes del while dale un valor que haga que no se salga del while, por ejemplo:

$QUESTION0='s';

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.

dariodr01

Espero esto te sirva.
Salu2.

Código (bash) [Seleccionar]
#!/bin/bash
usuario=$(whoami)
fecha=$(date)
question0="s"

while [ $question0 == "s" ]; do
echo "Hola $usuario ¿Que desea que haga?"

echo "1 -Dime que hora es"
echo "2 -Activame Super Usuario (Requiere Password)"
echo "3 -Creame una carpeta (Se le pedira nombre de la carpeta a crear)"
read i

case $i in
1)
echo "Dia| Mes| Hora| Año   $fecha"
            echo "¿Desea hacer otra cosa? S/N"
            read question0
            ;;
2)
            echo "Le pediremos la contraseña de Super Usuario"
            echo "¿Esta de acuerdo S/N?"
            read question1
            if [ $question1 == "s" ]
then
sudo su
                else
echo "No ha seleccionado " S ""
                    exit
            fi
            ;;
3)
echo "Se le pedira que introduzca un nombre para el directorio"
            read dir
            echo "A escogido $dir"
            echo "¿Esta seguro? S/N"
            read question2
            if [ $question2 == "s" ]
then
mkdir $dir
                    exit
            fi
            ;;
esac
done

Aitorseven

Ahora cuando llegue a casa lo modifico
Gracias!

Aitorseven

Cita de: dariodr01 en 20 Mayo 2018, 06:20 AM
Espero esto te sirva.
Salu2.

Código (bash) [Seleccionar]
#!/bin/bash
usuario=$(whoami)
fecha=$(date)
question0="s"

while [ $question0 == "s" ]; do
echo "Hola $usuario ¿Que desea que haga?"

echo "1 -Dime que hora es"
echo "2 -Activame Super Usuario (Requiere Password)"
echo "3 -Creame una carpeta (Se le pedira nombre de la carpeta a crear)"
read i

case $i in
1)
echo "Dia| Mes| Hora| Año   $fecha"
            echo "¿Desea hacer otra cosa? S/N"
            read question0
            ;;
2)
            echo "Le pediremos la contraseña de Super Usuario"
            echo "¿Esta de acuerdo S/N?"
            read question1
            if [ $question1 == "s" ]
then
sudo su
                else
echo "No ha seleccionado " S ""
                    exit
            fi
            ;;
3)
echo "Se le pedira que introduzca un nombre para el directorio"
            read dir
            echo "A escogido $dir"
            echo "¿Esta seguro? S/N"
            read question2
            if [ $question2 == "s" ]
then
mkdir $dir
                    exit
            fi
            ;;
esac
done

Muchas gracias!! Ya esta todo resuelto funciona 100%