У меня есть скрипт оболочки, запрашивающий ответ да / нет. в подсказке перед вводом я использовал сигнал control-c, который вызывает функцию обработки сигналов. В функции обработки сигналов есть подсказка «q» для выхода или «y» и «y» следует использовать с подсказкой «FIRST read».
Я пытался ((echo "y" | read)), но не работал
Это часть моего сценария:
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
.
.
.
.
вывод должен быть таким, как показано ниже:
не введен действительный идентификатор пользователя, новые идентификаторы пользователя? [y \ n]: введено # control-c
'Используйте' q ', чтобы выйти' y ------> здесь "y" вводится вместо "q" в функции Siganl Handeling, затем сохраняется в переменной «ans», которая получает условие true для запроса имени пользователя.
usernames: Larry -----> имя, которое вводится после истинного условия. , , .
Это проблема X-Y. С какой стати использовать read
для установки переменной в скрипте?
Установите ее обычным способом; ans=y
Это сделало бы функцию похожей на это:
IntHandle ()
{
echo -e "\nUse 'q' to quit "
read var1
if [[ $var1 == q ]]
then
exit 1
else
ans=y
fi
}