Shell脚本交互式输入密码以"*"显示
创建文本passwd.sh,输入shell命令如下:
#!/bin/bash
read -p "type your name:" name
paasword=""
echo -n "type your paasword:"
while read -n 1 cc; do
if [ $cc ]; then
password=$password$cc
echo -n -e "\b*"
else
break;
fi
done
echo "The name you type is "$name
echo "The password you type is "$password
exit 0
执行命令./passwd.sh,生成效果图如下:
read -p “提示信息” 接收输入值的变量:read命令接收标准输入,将用户输入赋值给变量,-p :指定提示信息,默认不支持换行;
echo -n “提示信息”:输出提示信息,且参数-n表示不换行输出;
read -n 1 cc:表示只接受用户输入一个字符;
while read -n 1 cc:用户每次输入一个字符,并赋值给变量cc;遇到换行则结束输入;
if [ $cc] :判断用户是否输入,用户有输入字符时则在passwd变量中追加字符并赋值给变量passwd;用户不输入任何字符时,则执行else 中的break,结束循环;
echo -n:不换行输出;
echo -e:遇到特殊字符不会当成字符输出,会特别处理;
“\b”:向前退格即删除前一个字符并输出"*";例如:
#!/bin/bash
read -p "type your name:" name
paasword=""
echo -n "type your paasword:"
while read -n 1 cc; do
if [ $cc ]; then
password=$password$cc
#调试:每次用户给cc赋值,都会向前退格删除2,并输出下一个字符*
echo -n -e "2\b*"
else
break;
fi
done
echo "The name you type is "$name
echo "The password you type is "$password
exit 0
exit 0:退出脚本;