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 read
para 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
}