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
por de pronto no veo el done; al final.
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"
Hola, el error esta en que no has inicializado la variable question0.
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
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';
Espero esto te sirva.
Salu2.
#!/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
Ahora cuando llegue a casa lo modifico
Gracias!
Cita de: dariodr01 en 20 Mayo 2018, 06:20 AM
Espero esto te sirva.
Salu2.
#!/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%