。

我有一个提示答案 y/n 的 shell 脚本。在输入之前的提示下,我使用了 control-c 信号来调用信号处理函数。在信号处理函数中有一个提示“q”来退出或“y”,并且“y”应该与 FIRST 读取提示一起使用。

我试过 (( 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
       .
       .
       .
       .

输出应如下所示:

未输入有效的用户 ID,是否输入了新用户 ID?[y\n]:#control-c 输入

' 使用 'q' 退出 ' y ------> 此处在 Siganl Handeling 函数中输入“y”而不是“q”,然后将其保存在“ans”变量中,该变量使条件为真以提示用户名。

用户名:Larry ----->在真实条件后输入的名字。。。。

答案1

这是一个 XY 问题。为什么read要在脚本中设置变量?

按正常方式设置;ans=y

这将使函数看起来像这样:

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

相关内容