Tengo un script de shell que solicita una respuesta y/n. en el mensaje antes de dar entrada, utilicé la señal control-c que llama a la función de manejo de señal. En la función de manejo de señales hay un mensaje "q" para salir o "y" e "y" deben usarse con el PRIMER mensaje de lectura.
Intenté (( echo "y" | leer )) pero no funcionó
Esto es parte de mi guión:
IntHandle ()
{
echo -e "\nUse 'q' to quit "
read var1
if [[ $var1 == q ]]
then
exit 1
else
echo "y" | read ----->here I need "y" to be an input to read prompt
directly and being saved in "ans" variable in
main body where I used control-c
fi
}
trap 'IntHandle' SIGINT
read -p "no valid user id entered, new user ids? [y\n]: " ans ----> here
used control-c signal before give y/n to ans
if [[ $ans == "y" ]]
then
read -p " username :" name
fi
.
.
.
.
.
la salida debería ser como la siguiente:
no se ingresó ninguna identificación de usuario válida, ¿nuevas identificaciones de usuario? [y\n]: #control-c ingresado
' Utilice 'q' para salir de ' y ------> aquí "y" ingresó en lugar de "q" en la función Siganl Handeling y luego se guarda en la variable "ans" que obtiene la condición verdadera para solicitar un nombre de usuario.
nombres de usuario: Larry -----> el nombre que se ingresa después de la condición verdadera. . . .
Respuesta1
Este es un problema XY. ¿Por qué diablos utilizarlo read
para configurar una variable en un script?
Configúrelo de la forma normal;ans=y
Esto haría que la función se viera así:
IntHandle ()
{
echo -e "\nUse 'q' to quit "
read var1
if [[ $var1 == q ]]
then
exit 1
else
ans=y
fi
}