.

           .

Eu tenho um script de shell solicitando uma resposta s/n. no prompt antes de fornecer a entrada, usei o sinal control-c que chama a função Signal Handling. Na função Signal Handling há um prompt "q" para sair ou "y" e "y" devem ser usados ​​com o prompt de PRIMEIRA leitura.

Eu tentei (( echo "y" | read )) mas não funcionou

Isso faz parte do meu script:

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
       .
       .
       .
       .

.

a saída deve ser como abaixo:

nenhum ID de usuário válido inserido, novos IDs de usuário? [y\n]: #control-c inserido

' Use 'q' para sair ' y ------> aqui "y" digitado em vez de "q" na função Siganl Handeling então é salvo na variável "ans" que obtém a condição verdadeira para solicitar um nome de usuário.

nomes de usuário: Larry -----> o nome inserido após a condição verdadeira. . . .

Responder1

Este é um problema XY. Por que diabos usar readpara definir uma variável em um script?

Configure da maneira normal;ans=y

Isso faria com que a função ficasse assim:

IntHandle ()
{ 
  echo -e "\nUse 'q' to quit "
  read var1 
  if [[ $var1 == q ]]
  then
      exit 1
  else
      ans=y
  fi
}

informação relacionada