Chinaunix
标题:
脚本实现输入密码并且用*号显示输入字符 问题
[打印本页]
作者:
猪戊辰
时间:
2009-10-10 10:56
标题:
脚本实现输入密码并且用*号显示输入字符 问题
原帖:
http://bbs2.chinaunix.net/viewthread.php?tid=543875&extra=page%3D1%26amp%3Bfilter%3Ddigest
#############################################
#!/bin/ksh
#该段脚本实现输入密码并且用*号显示输入字符,
#输入回车键终止输入密码。该代码在SCO 5.05上
#KSH下已经调试通过。
#河南 平顶山 王向宇 2005.05.11
#############################################
#该函数实现无缓冲输入一个字符,并传给位置参数$1
getchar()
{
#设置无缓冲输入模式
stty raw
#设置输入不回显
stty -echo
#将该字符传送给位置参数$1
eval $1=`dd if=/dev/tty bs=1 count=1 2> /dev/null`
#恢复回显
stty echo
#恢复原终端输入模式,也可用命令:stty sane实现同样功能
stty cooked
}
clear
#将光标定位到15行10列
tput cup 15 10
echo -n "请输入密码:\c"
#初始化光标位置
CURPOS=20
while true
do
#光标向前移动一列
CURPOS=`expr ${CURPOS} + 1`
getchar char
tput cup 15 ${CURPOS}
echo "*"
if [ "${char}" = "^M" ]
then
break
else
PWDSTR=${PWDSTR}${char}
fi
done
echo "你输入的密码是: ${PWDSTR}"
复制代码
关于这段代码,我怎么运行老是出问题阿
我把
if [ "${char}" = "^M" ]
复制代码
改成"\n"也不行,改成"a" 当输入a的时候才能终止。
作者:
waker
时间:
2009-10-10 11:12
^M是指按住ctrl键打个M
作者:
猪戊辰
时间:
2009-10-10 11:39
标题:
回复 #2 waker 的帖子
恩 这个我晓得,只是并不起作用 输进去的的一样被程序变成 * 终止不了啊 不知道是程序哪儿出问题了 还是我的机器问题 我是ubuntu 9.10 ,ksh 和 bash 都是新版的 希望指点一下。
作者:
waker
时间:
2009-10-10 12:41
set -o vi
再试试
作者:
HongLian3
时间:
2009-10-10 13:56
标题:
回复 #3 猪戊辰 的帖子
果然不行呢,别的非组合键都可以通过,但^M形式的就是通不过。
另外,lz的代码读入字符后即输出一个*,操作在if判断语句之前,这样无论如何*的数量都会比密码的字符数多一个吧~
也照版主的方法试过了,还是不行。。。
作者:
猪戊辰
时间:
2009-10-10 20:19
标题:
回复 #4 waker 的帖子
不行阿 按照原作者程序的意思 应该能通过阿 我是在05年的一个精华帖子里面找到这段代码的 回车不是用 \n 表示吗
getchar是不是直接把回车过滤了呢
[
本帖最后由 猪戊辰 于 2009-10-10 20:48 编辑
]
作者:
blackold
时间:
2009-10-10 22:29
我这里测试正常。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2