Linux 在bash中正确使用带脚本的退格函数

Linux 在bash中正确使用带脚本的退格函数,linux,bash,ubuntu,terminal,Linux,Bash,Ubuntu,Terminal,我在bash中有以下代码 read -p "Enter your ID: " ID unset PASSWORD prompt="Enter Password:" while IFS= read -p "$prompt" -r -s -n 1 char do if [[ $char == $'\0' ]] then break fi prompt='*' PASSWORD+="$char" done 实际上,这段代码要求用户输入密码,终端

我在bash中有以下代码

read -p "Enter your ID: " ID
unset PASSWORD
prompt="Enter Password:"
  while IFS= read -p "$prompt" -r -s -n 1 char
  do
    if [[ $char == $'\0' ]]
       then
         break
    fi
prompt='*'
PASSWORD+="$char"
done
实际上,这段代码要求用户输入密码,终端中的每一个字都显示为*但我的问题是,当我需要删除一个字符时,这段代码不带退格,而是将退格显示为任何其他字符,因此,我希望此代码不以退格为字符,它删除了终端中的单词键入。您可以使用-e进行
读取,如:

read -e -p ...

以星号的形式重复每个字符是一个坏主意。您将用户的密码长度泄露给任何偷看用户的人,或者密码长度可能会记录在终端日志中。如果,比如说,密码只有三个字符长,那么你的用户就完蛋了。