一、说明
Linux中用shell脚本实现用户注册,登录,删除特点:用户和密码是单另储存在一个文件中,程序结束后,下次登录只要存储用denglu.sh 主目录
denglu1.sh 注册功能模块
denglu2.sh 登录功能模块
denglu3.sh 删除单个用户功能模块
name_passwd 储存用户密码文件
name_save 储存用户名文件户的两个文件不删除,可直接登录
二、代码
1、联合
#联合
echo 请问您之前有注册过本程序的用户么?
echo 若有请输入Y 若没有请输入N
echo 若您想直接退出本程序请随意输入任意一个字符
read choice
if test $choice = Y
then
./denglu2.sh
elif test $choice = N
then
./denglu1.sh
fi
2、注册
#注册
name=('')
passwd=('')
echo 请注意一旦新注册用户
echo 之前已注册用会会全部删除!!!!
echo 若想继续请输入Y 退出注册程序请输入N
read choice
if test $choice = N
then
break
fi
echo "" > name_save
echo "" > name_passwd
echo 请问您想注册几个用户
read num
for (( i = 0 ; $i < $num ; i=$i+1))
do
let n=$i+1
echo 请输入第 $n 个用户的用户名
read nam
name[$i]=$nam
echo ${name[$i]} >> name_save
echo 请输入第 $n 个用户的密码
read nam
passwd[$i]=$nam
echo ${passwd[$i]} >> name_passwd
done
echo 注册完成请重新登录
./denglu2.sh
3、登录
#登录
name=('')
mapfile -t -s 1 name < name_save
passwd=('')
mapfile -t -s 1 passwd < name_passwd
echo 请输入您的用户名
read nam
for (( i=0 ; $i < ${#name[*]} ; i=$i+1 ))
do
n=3 #密码输入次数计数
if test $nam = ${name[$i]}
then
for (( ; n != -1 ; ))
do
echo 请输入密码
read mi
if test $mi = ${passwd[$i]}
then
echo 已成功登录 ${name[$i]} 用户
let z=1
break
else
echo 密码输入错误
echo 您还有 $n 次输入机会
let n=$n-1
fi
done
if test $n = -1
then
let z=0
echo 请问您是否需要返回主目录
echo 需要请输入Y 不需要请输入N
echo 如果需要推出本程序 请随意输入一个字符
read choice
if test $choice = Y
then
./denglu.sh
elif test $choice = N
then
echo 请重新登录
./denglu2.sh
else
break
fi
fi
break
fi
done
if test $i = ${#name[*]}
then
echo 请问您是否需要返回主目录
echo 需要请输入Y 不需要请输入N
echo 如果需要推出本程序 请随意输入一个字符
read choice
if test $choice = Y
then
./denglu.sh
elif test $choice = N
then
echo 请重新登录
./denglu2.sh
fi
fi
if test $z = 1
then
echo 请问您需要删除某个用户么?
echo 是请输入Y 否请输入N
echo 若需要推出登录返回主页面请随意输入一个字符
read choice
if test $choice = Y
then
./denglu3.sh
elif test $choice != N
then
./denglu.sh
#else
#留下的接口和增添功能使用
fi
fi
4、用户删除
#用户删除
name=('')
mapfile -t -s 1 name < name_save
passwd=('')
mapfile -t -s 1 passwd < name_passwd
num=${#name[*]}
echo 目前有以下这 $num 个用户
for ((i = 0 ; i < $num ; i=$i+1 ))
do
let n=$i+1
echo 这是第 $n 个用户
echo ${name[i]}
done
echo 请问您想删除第几个用户
read man
echo "" > name_save
echo "" > name_passwd
name1=('')
passwd1=('')
u=0
let man=$man-1
for (( i = 0 ; i < $num ; i=$i+1 ))
do
if test $i != $man
then
name1[u]=${name[$i]}
echo "${name1[$u]}" >> name_save
passwd1[u]=${passwd[$i]}
echo "${passwd1[$u]}" >> name_passwd
let u=$u+1
else
continue
fi
done
echo 目前的用户还有 $u 个,分别是
for (( i = 0 ; $i < n; i=i+1 ))
do
echo ${name1[$i]}
done
echo 删除成功请重新登录!
./denglu2.sh