我有一个提示答案 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
}