shell脚本综合练习题:模拟用户登陆程序:
1,给用户一个选择菜单:根据选择执行菜单功能:
(1)用户登录(2)用户注册(3)用户删除(4)退出登录
2,选择用户登陆以后
(1)让用户输入账号,验证账号是否正确
(2)让用户输入密码,验证密码是否正确
(3)如果账户密码都正确,登陆成功,输出一个登陆成功的话,自动停止脚本
(4)如果账户输入错误,让用户继续输入账户信息。
(5)如果账户正确,密码输入错误,那么同一个用户的密码,允许用户最多输入错3次。3次之后,账户锁定。锁定以后,账户不能登录
(6)被锁定账户不能登录,但是其他正常账户仍旧可以登录。
3,整个脚本过程,只有两个地方可以退出脚本。
(1)用户选择菜单里,执行退出登录
(2)用户登录成功以后,自动退出脚本
重点:
①decide 选择命令:可使指令进行交互输出,可使用选项,而不是执行一次就关闭
②clear 清屏,执行后会把执行脚本的显示情况清空
③sleep暂停,语法:sleep 秒数 例如:sleep 1.5 即执行到这时会暂停1.5秒
④User1="用户名" 创建用户名,可同时创建多个
Passwd1="密码" 创建对应用户名的密码,几个用户名就可以创建几个密码
⑤Lock="" 创建初期为空的锁定变量,
Lock=$Lock" 用户名" 把此用户放进锁定名单,就不能再登录了
echo "$Lock" 检验用户是否被锁定,显示哪个用户名那个就是被锁定的
⑥return:跳出整个循环回到最初调用它的位置。区别于exit/coninue/break
编写步骤:①vim test.sh
②#!/bin/bash (提示:下边“ ”是linux中的缩进符,实际不输出具体字符)
User1="yunjisuan"
User2="benet"
Passwd1="111111"
Passwd2="222222"
Lock=""
function Title(){
cat << FOF
************************
* 1,用户登录 *
* 2,用户注册 *
* 3,用户删除 *
* 4,退出登录 *
************************
FOF
}
function Login(){
while :
do
read -p "请输入用户名:" User
echo "$Lock" | egrep -w "$User" &>/dev/null
if [ $? -eq 0 ];then
echo "$User已锁定,请用其他用户登录"
return
fi
if [ $User == $User1 -o $User == $User2 ];then
for i in 3 2 1
do
read -p "请输入密码:" Passwd (-P前加-s输密码时密码不可见)
if [ $User == $User1 -a $Passwd == $Passwd1 ];then
echo "$User登录成功"
exit
elif [ $User == $User2 -a $Passwd == $Passwd2 ];then
echo "$User登陆成功"
exit
else
echo "密码输入错误,您还有$((i-1))次机会,请重新输入"
fi
done
Lock=$Lock" $User"
echo "$User已输入错误3次,账户锁定"
return
else
echo "账户输入错误,请重新输入"
fi
done
}
function Zhuce(){
echo "用户注册"
}
function Shanchu(){
echo "用户删除"
}
function Exit(){
echo "退出登录"
exit 0
}
while :
do
clear
Title
read -p "请输入你的选择:" decide
case $decide in
1 )
Login
;;
2 )
Zhuce
;;
3 )
Shanchu
;;
4 )
Exit
;;
* )
echo "输入错误,请重新输入"
esac
sleep 1.5
done ... 保存退出
③sh test.sh 执行后可进行交互指令
(目前仅编写了(1)用户登录(4)退出登录 这二个功能,若需要(2)用户注册(3)用户删除 这二项功能,须在脚本中增加这儿方面的内容