无法在 bash 脚本中“读取”正常工作

问题描述 投票:0回答:1

我有以下脚本:

echo "User already exists, delete user? [Y/n] "
read -r -n 1 yn
echo "$yn was pressed"

当我运行脚本时:

  • 按 y 或 Y(不带 [Enter])会将字符回显到屏幕上。
  • 按[Enter]键将光标移至新行,但以下 echo 命令不执行
  • 再次按 [Enter] 会执行 echo 命令

我希望它不需要我按 [Enter] 两次。

我尝试了不同的变体,包括将提示放入读取命令中,但这更糟糕,因为当时提示从未出现过。

我做错了什么?

linux bash input
1个回答
0
投票

读取命令将您的输出写入变量,您只需处理它即可。

read -r -n 1 -p "Y/y" response
case "$response" in
    [yY][eE][sS]|[yY]) 
        do_something
        ;;
    *)
        do_something_else
        ;;
esac

我的版本BASH

bash --version
GNU bash, версия 5.2.37(1)-release (x86_64-pc-linux-gnu)
© www.soinside.com 2019 - 2024. All rights reserved.