我有 shell 腳本提示回答 y/n。在給出輸入之前的提示下,我使用了 control-c signal 來呼叫訊號處理函數。在訊號處理功能中,有一個提示“q”退出或“y”,並且“y”應與第一次讀取提示一起使用。
我嘗試 (( 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 ------> 這裡“y”在Siganl Handeling 函數中輸入而不是“q”,然後將其保存在“ans”變數中,該變數會取得條件true 來提示用戶名。
usernames: Larry -----> true 條件後輸入的名稱。 。 。 。
答案1
這是一個XY問題。到底為什麼read
要在腳本中設定變數?
按正常方式設定;ans=y
這將使該函數看起來像這樣:
IntHandle ()
{
echo -e "\nUse 'q' to quit "
read var1
if [[ $var1 == q ]]
then
exit 1
else
ans=y
fi
}