.

           .

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 readpara 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
}

información relacionada