Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Aitorseven en 18 Mayo 2018, 19:31 pm



Título: Problema con While En Script de Ubuntu (Resuelto)
Publicado por: Aitorseven en 18 Mayo 2018, 19:31 pm
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


Título: Re: Problema con While En Script de Ubuntu
Publicado por: animanegra en 18 Mayo 2018, 19:38 pm
por de pronto no veo el done; al final.


Título: Re: Problema con While En Script de Ubuntu
Publicado por: Aitorseven en 18 Mayo 2018, 20:01 pm
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"


Título: Re: Problema con While En Script de Ubuntu
Publicado por: dariodr01 en 19 Mayo 2018, 06:49 am
Hola, el error esta en que no has inicializado la variable question0.


Título: Re: Problema con While En Script de Ubuntu
Publicado por: Aitorseven en 19 Mayo 2018, 08:25 am
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


Título: Re: Problema con While En Script de Ubuntu
Publicado por: animanegra en 19 Mayo 2018, 10:39 am
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';


Título: Re: Problema con While En Script de Ubuntu
Publicado por: dariodr01 en 20 Mayo 2018, 06:20 am
Espero esto te sirva.
Salu2.

Código
  1. #!/bin/bash
  2. usuario=$(whoami)
  3. fecha=$(date)
  4. question0="s"
  5.  
  6. while [ $question0 == "s" ]; do
  7. echo "Hola $usuario ¿Que desea que haga?"
  8.  
  9. echo "1 -Dime que hora es"
  10. echo "2 -Activame Super Usuario (Requiere Password)"
  11. echo "3 -Creame una carpeta (Se le pedira nombre de la carpeta a crear)"
  12. read i
  13.  
  14. case $i in
  15. 1)
  16. echo "Dia| Mes| Hora| Año   $fecha"
  17.            echo "¿Desea hacer otra cosa? S/N"
  18.            read question0
  19.            ;;
  20. 2)
  21.            echo "Le pediremos la contraseña de Super Usuario"
  22.            echo "¿Esta de acuerdo S/N?"
  23.            read question1
  24.            if [ $question1 == "s" ]
  25. then
  26. sudo su
  27.                else
  28. echo "No ha seleccionado " S ""
  29.                    exit
  30.            fi
  31.            ;;
  32. 3)
  33. echo "Se le pedira que introduzca un nombre para el directorio"
  34.            read dir
  35.            echo "A escogido $dir"
  36.            echo "¿Esta seguro? S/N"
  37.            read question2
  38.            if [ $question2 == "s" ]
  39. then
  40. mkdir $dir
  41.                    exit
  42.            fi
  43.            ;;
  44. esac
  45. done
  46.  


Título: Re: Problema con While En Script de Ubuntu
Publicado por: Aitorseven en 21 Mayo 2018, 11:00 am
Ahora cuando llegue a casa lo modifico
Gracias!


Título: Re: Problema con While En Script de Ubuntu
Publicado por: Aitorseven en 21 Mayo 2018, 20:26 pm
Espero esto te sirva.
Salu2.

Código
  1. #!/bin/bash
  2. usuario=$(whoami)
  3. fecha=$(date)
  4. question0="s"
  5.  
  6. while [ $question0 == "s" ]; do
  7. echo "Hola $usuario ¿Que desea que haga?"
  8.  
  9. echo "1 -Dime que hora es"
  10. echo "2 -Activame Super Usuario (Requiere Password)"
  11. echo "3 -Creame una carpeta (Se le pedira nombre de la carpeta a crear)"
  12. read i
  13.  
  14. case $i in
  15. 1)
  16. echo "Dia| Mes| Hora| Año   $fecha"
  17.            echo "¿Desea hacer otra cosa? S/N"
  18.            read question0
  19.            ;;
  20. 2)
  21.            echo "Le pediremos la contraseña de Super Usuario"
  22.            echo "¿Esta de acuerdo S/N?"
  23.            read question1
  24.            if [ $question1 == "s" ]
  25. then
  26. sudo su
  27.                else
  28. echo "No ha seleccionado " S ""
  29.                    exit
  30.            fi
  31.            ;;
  32. 3)
  33. echo "Se le pedira que introduzca un nombre para el directorio"
  34.            read dir
  35.            echo "A escogido $dir"
  36.            echo "¿Esta seguro? S/N"
  37.            read question2
  38.            if [ $question2 == "s" ]
  39. then
  40. mkdir $dir
  41.                    exit
  42.            fi
  43.            ;;
  44. esac
  45. done
  46.  
Muchas gracias!! Ya esta todo resuelto funciona 100%