Linux中用shell脚本实现用户注册,登录,删除特点

一、说明

Linux中用shell脚本实现用户注册,登录,删除特点:用户和密码是单另储存在一个文件中,程序结束后,下次登录只要存储用denglu.sh   主目录

denglu1.sh   注册功能模块

denglu2.sh   登录功能模块

denglu3.sh   删除单个用户功能模块

name_passwd  储存用户密码文件

name_save     储存用户名文件户的两个文件不删除,可直接登录

二、代码

1、联合

#联合
echo 请问您之前有注册过本程序的用户么?
echo 若有请输入Y  若没有请输入N 
echo 若您想直接退出本程序请随意输入任意一个字符
read choiceif 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
thenbreak
fi
echo "" > name_save
echo "" > name_passwd
echo 请问您想注册几个用户
read numfor (( i = 0 ; $i < $num ; i=$i+1))
do let n=$i+1echo 请输入第 $n 个用户的用户名read namname[$i]=$namecho ${name[$i]} >> name_saveecho 请输入第 $n 个用户的密码read nampasswd[$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_passwdecho 请输入您的用户名
read nam
for (( i=0 ; $i < ${#name[*]} ; i=$i+1 ))
do n=3 #密码输入次数计数if test $nam = ${name[$i]} thenfor (( ; n != -1 ; ))doecho 请输入密码read miif test $mi = ${passwd[$i]}thenecho 已成功登录 ${name[$i]} 用户let z=1breakelseecho 密码输入错误echo 您还有 $n 次输入机会let n=$n-1fidoneif test $n = -1thenlet z=0echo 请问您是否需要返回主目录echo 需要请输入Y  不需要请输入Necho 如果需要推出本程序 请随意输入一个字符read choiceif test $choice = Ythen./denglu.shelif test $choice = Nthenecho 请重新登录./denglu2.shelsebreakfifibreakfi
doneif test $i = ${#name[*]}	thenecho 请问您是否需要返回主目录echo 需要请输入Y  不需要请输入Necho 如果需要推出本程序 请随意输入一个字符read choiceif test $choice = Ythen./denglu.shelif test $choice = Nthenecho 请重新登录./denglu2.shfifi
if test $z = 1
thenecho 请问您需要删除某个用户么?echo 是请输入Y 否请输入N echo 若需要推出登录返回主页面请随意输入一个字符read choiceif test $choice = Ythen./denglu3.shelif test $choice != N  then	./denglu.sh#else#留下的接口和增添功能使用fi
fi

4、用户删除

#用户删除
name=('')
mapfile  -t -s 1 name < name_savepasswd=('')
mapfile  -t -s 1 passwd < name_passwdnum=${#name[*]}echo 目前有以下这 $num 个用户
for ((i = 0 ; i < $num ; i=$i+1 ))
do let n=$i+1echo 这是第 $n 个用户echo ${name[i]}
doneecho 请问您想删除第几个用户
read man  echo "" > name_save
echo "" > name_passwdname1=('')
passwd1=('')u=0
let man=$man-1for (( i = 0 ; i < $num ; i=$i+1 ))
do if test $i != $manthenname1[u]=${name[$i]}echo "${name1[$u]}" >> name_savepasswd1[u]=${passwd[$i]}echo "${passwd1[$u]}" >> name_passwdlet u=$u+1elsecontinuefi
doneecho 目前的用户还有 $u 个,分别是
for (( i = 0 ; $i < n; i=i+1 ))
doecho ${name1[$i]}
doneecho  删除成功请重新登录!
./denglu2.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 双指针与链表

链表中的一些题目可以用双指针解决&#xff0c;我们将这些题目与其他双指针题目做了总结。 非链表题目 替换数字 给定一个字符串 s&#xff0c;它包含小写字母和数字字符&#xff0c;请编写一个函数&#xff0c;将字符串中的字母字符保持不变&#xff0c;而将每个数字字符替…

书生大模型实战营闯关记录----第二关:实现word_count统计文本中word频次

实现word_count统计文本中word频次 请实现一个wordcount函数&#xff0c;统计英文字符串中每个单词出现的次数。返回一个字典&#xff0c;key为单词&#xff0c;value为对应单词出现的次数。 Eg: Input: """Hello world! This is an example. Word coun…

每日刷题记录(codetop版)

7.21 7.22 7.23 复习7.21和7.22

读书的意义

文章目录 引言什么是热恋的人常做的事?写作是什么样的过程?什么是人生的转折点?人生的答案是什么?为什么很多人宁愿痛苦也不改变?回望过去常有的感受是什么?女人可以活成哪种样子?为什么不能轻言放弃?有没有做一件事“最完美的时刻”?如何生活得有滋有味?为什么要尝试…

Eureka在Kubernetes中的部署指南:微服务发现的艺术

标题&#xff1a;Eureka在Kubernetes中的部署指南&#xff1a;微服务发现的艺术 在当今快速发展的云计算时代&#xff0c;微服务架构因其灵活性和可扩展性而受到青睐。Eureka&#xff0c;作为Netflix开源的服务发现框架&#xff0c;已成为微服务架构中的一个关键组件。然而&am…

并发情况导致事务失效的场景

public void test(Pageable request){for (int i 0; i < 100; i) {//新建线程处理new Thread(() -> {userInfoService.testDemo();}).start();} } 这里创建多个线程模拟多并发场景 Transactional(rollbackOn Exception.class) public synchronized void testDemo() {…

一文入门SpringSecurity 5

目录 提示 Apache Shiro和Spring Security 认证和授权 RBAC Demo 环境 Controller 引入Spring Security 初探Security原理 认证授权图示​编辑 图中涉及的类和接口 流程总结 提示 Spring Security源码的接口名和方法名都很长&#xff0c;看源码的时候要见名知意&am…

海外IP代理科普:代理池有什么用?代理池大小的影响

在当今数字化时代&#xff0c;网络爬虫已经成为获取各类信息必不可少的工具。在大规模数据抓取中&#xff0c;使用单一 IP 地址或同一 IP 代理往往会面临抓取可靠性降低、地理位置受限、请求次数受限等一系列问题。为了克服这些问题&#xff0c;构建代理池成为一种有效的解决方…

控制欲过强的Linux小进程

控制欲强?视奸&#xff1f;普通人那才叫视奸&#xff0c;您是皇帝&#xff0c;天下大事无一逃过您的耳目&#xff0c;您想看什么就看什么&#xff0c;臣怀疑他在朋友圈私养兵士&#xff0c;囤积枪甲&#xff0c;蓄意谋反&#xff0c;图谋皇位啊&#xff01; 哈哈哈哈开个玩笑&…

使用GoAccess进行Web日志可视化

运行网站的挑战之一是了解您的 Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您&#xff0c;但要完全了解正在发生的事情&#xff0c;唯一的方法是查看 Web 日志。阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。…

离散型以及连续型随机变量

目录 离散型随机变量 定义与性质 分布律 分布函数 连续型随机变量 定义与性质 概率密度函数 分布函数 多维随机变量 二维离散型随机变量 二维连续型随机变量 常见的连续型分布 离散型随机变量的概率质量函数和概率密度函数之间的关系是什么&#xff1f; 如何计算连…

C++的UI框架和开源项目介绍

文章目录 1.QT2.wxWidgets3.Dear ImGui 1.QT QT的开源项目&#xff1a;QGIS&#xff08;地理信息系统&#xff09; https://github.com/qgis/QGIS?tabreadme-ov-file 2.wxWidgets wxWidgets的开源项目&#xff1a;filezilla https://svn.filezilla-project.org/svn/ wxWidg…

OSI参考模型:解析网络通信的七层框架

引言 在现代计算机网络中&#xff0c;OSI&#xff08;开放式系统互联&#xff09;参考模型是理解和设计网络通信协议的基础。1978年由国际标准化组织&#xff08;ISO&#xff09;提出&#xff0c;OSI模型定义了网络通信的七层结构&#xff0c;每一层都承担着特定的功能&#x…

环形链表的相关证明

141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

基于MobileNetv2的垃圾分类函数式自动微分-昇思25天打卡

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…

推荐推荐两款免费的WIN PE工具,很好用两款免费的WIN PE工具,很好用

上次推荐了三款WIN PE工具​&#xff1a;推荐3款装机必不可少的PE工具箱&#xff0c;全是宝藏工具&#xff0c;千万不要错过-CSDN博客 今天继续推荐两款WIN PE工具。 FirPE FirPE是一款系统预安装环境&#xff08;Windows PE&#xff09;&#xff0c;它具有简约、易操作等特点…

《SeTformer Is What You Need for Vision and Language》

会议&#xff1a;AAAI 年份&#xff1a;2024 论文&#xff1a;DDAE: Towards Deep Dynamic Vision BERT Pretraining - AMinerhttps://www.aminer.cn/pub/6602613613fb2c6cf6c387c2/ddae-towards-deep-dynamic-vision-bert-pretraining 摘要 这篇论文介绍了一种新型的变换器…

分块查找(Java)

定义块对象 class Block{private int start;private int end;private int maxKey;public Block(int start, int end, int maxKey) {this.start start;this.end end;this.maxKey maxKey;}public int getStart() {return start;}public void setStart(int start) {this.start…

求职学习day9

打游戏后作息完全不受控制了。昨晚本来吃完晚饭想玩一会&#xff0c;直接玩到4点才睡觉。 五六点出去一趟走走还是挺好的&#xff0c;锻炼一下&#xff0c;获取一点生活气不然整天待在房间里都要疯了。 感觉可能是学习环境的问题&#xff0c;或者是生活作息的问题&#xff0c…

CSS 中border-radius 属性

border-radius 属性在 CSS 中用于创建圆角边框。它可以接受一到四个值&#xff0c;这些值可以是长度值&#xff08;如像素 px、em 等&#xff09;或百分比&#xff08;%&#xff09;。当提供四个值时&#xff0c;它们分别对应于边框的左上角、右上角、右下角和左下角的圆角半径…