Actualmente estoy escribiendo mi tercer script de shell y me he encontrado con un problema. Este es mi guión hasta ahora:
#!/bin/bash
echo "choose one of the following options : \
1) display all current users \
2) list all files \
3) show calendar \
4) exit script"
while read
do
case in
1) who;;
2) ls -a;;
3) cal;;
4) exit;;
esac
done
cuando trato de ejecutar el script dice esto:
line2 : unexpected EOF while looking for matching '"'
line14 : syntax error: unexpected end of file.
¿Qué estoy haciendo mal?
shell
shell-script
Swifty124
fuente
fuente
Respuestas:
El problema es que a su
case
declaración le falta el tema, la variable que debe evaluar. Por lo tanto, probablemente quieras algo como esto:Aquí
case
usa la variable predeterminada$REPLY
que seread
llena cuando no se le da ningún nombre de variable (verhelp read
para más detalles).También tenga en cuenta los cambios:
printf
se usa para mostrar el mensaje en cada ronda (y no agrega una nueva línea),cat
se usa para imprimir instrucciones en varias líneas para que no se envuelvan y sean más fáciles de leer.fuente
No olvidemos
select
:fuente
Probemos por un solo caso inicialmente. Usaré
read -p
para leer la entrada del usuario en una variableopt
seguida de una declaración de caso como se muestra a continuación.El script anterior funciona bien y ahora, creo que necesita tenerlo en un bucle para que pueda leer la entrada del usuario hasta que el usuario presione la opción 4.
Entonces, podríamos hacerlo con un
while
bucle como a continuación. Establezco la variableopt
con el valor inicial en 0. Ahora, estoy iterando en elwhile
bucle siempre que laopt
variable tenga un valor de 0 (por lo que restablezco laopt
variable como 0 al final de lacase
declaración).fuente
Yo personalmente pondría el "while" al comienzo del código. Si luego lo sigue con un
:
, le permitirá recorrer tantas veces como lo desee. Así es como lo escribiría.luego continúe con las preguntas y termine con
fuente