shell我们平常在windows下登陆的时候输入密码的时候会回显一个“*”,而linux下只是屏蔽了回显,那shell有办法实现回显"*"么?
在网上搜了一阵,找到如下的实例,但是这个例子在我的环境下(ubuntu 16.04)运行还时有缺陷,主要的问题处在判断特殊按键上(backtrace/enter...),也就时下面代码中的case语句不能很好的工作。
#!/bin/bash
STTY_RESTORE=$(stty -g)
echo -n "Username: "
read username
echo -n "Password: "
stty -echo cbreak
while true
do
character=$(dd if=/dev/tty bs=1 count=1 2> /dev/null)
case $character in
$(echo -e "\n"))
break
;;
$(echo -e "\b"))
if [ -n "$password" ]; then
echo -n -e "\b \b"
password=$(echo "$password" | sed "s/.$//g")
fi
;;
*)
password=$password$character
echo -n "*"
;;
esac
done
stty $STTY_RESTORE #stty -cbreak echo
echo -e "\n\nUsername is $username"
echo "Password is $password"
本文永久更新地址://m.ajphoenix.com/linux/21399.html