Shell编程-用户信息管理
shell编写脚本文件,完成对信息的增删改查功能
·
1 要求
编写脚本文件,完成对信息的增删改查功能:
1、main.sh脚本执行完后,出现菜单选项,如果选择为1时,则可以添加信息;若为2时则可以删除指定信息,当选择为3时则可修改用户信息,当选择为4时则查询特定用户,当选择为5时可以查看所有用户的信息,当选择为0时则退出系统。
2、add.sh脚本用于实现添加用户信息。
3、delete.sh脚本通过用户名,找到配置文件中对应记录,并将其删除,考虑到用户可能误操作,因此要真正删除用户信息前,先进行确认。
4、update.sh脚本根据输入的信息进行替换,先确认是否需要替换该替换该用户信息,再依次输入详细信息进行替换。
2 代码
main.sh
#!/bin/bash
function show(){
echo ""
echo " ********************************"
echo " * 欢迎使用用户管理系统 *"
echo " * *"
echo " * 1、添加用户 *"
echo " * 2、删除用户 *"
echo " * 3、更新用户信息 *"
echo " * 4、查询用户 *"
echo " * 5、查看所有用户 *"
echo " * 0、退出系统 *"
echo " * *"
echo " ********************************"
}
while true
do
show
read -p "请输入你的选择:" choice
case $choice in
1)
sh add.sh
;;
2)
sh delete.sh
;;
3)
sh update.sh
;;
4)
sh select_user.sh
;;
5)
sh select_all.sh
;;
0)
exit 1
;;
esac
done
exit 0
add.sh
#!/bin/bash
# set Attribute
# $1: 参数名 $2 : 最多位数
setAtt(){
read -p "请输入$1:" temp;
len=${#temp}
while [ $len -gt $2 ]
do
read -p "输入错误,$1最多$2位,请重新输入$1:" temp
len=${#temp}
done
echo $temp
}
success="true"
while $success
do
echo "====================================="
echo "请添加用户"
ID=$(setAtt ID 3)
name=$(setAtt 用户名 3)
password=$(setAtt 密码 10)
role=$(setAtt 角色 6)
sex=$(setAtt 性别 3)
age=$(setAtt 年龄 3)
phone=$(setAtt 电话号码 11)
success="false"
done
user_info="$ID-$name-$password-$role-$sex-$age-$phone"
echo "$user_info" >> user_info.txt
echo "添加成功"
Delete.sh
#!/bin/bash
function delete(){
echo "==================================="
read -p "请输入需要删除的ID:" id
n=1
success="false"
# 遍历用户信息
read -p "确认删除吗?(1确认,0取消)" ok
if [ "$ok" == "0" ]
then
echo "...取消删除"
success="quit"
fi
for line in `cat user_info.txt`
do
ID=""
#将用户数据分隔成数组
OLD_IFS="$IFS"
IFS="-"
info=($line)
IFS="$OLD_IFS"
# 如果输入的id与用户表中的ID一致,则进行删除
if [ "$ok" == "1" ]
then
success="true"
sed -i "${n}d" user_info.txt
break
fi
let n+=1
done
# 根据删除成功的标志删除提示信息
if [ $success == "true" ]
then
echo "删除成功"
elif [ $success != "quit" ]
then
echo "删除失败,没有找到这个ID"
fi
}
delete
Update.sh
#!/bin/bash
echo "==================================="
success="false"
read -p "请输入要修改的用户的用户名:" name
echo " ******************************"
echo " * *"
echo " * 1、修改id *"
echo " * 2、修改用户名 *"
echo " * 3、修改密码 *"
echo " * 4、修改角色 *"
echo " * 5、修改性别 *"
echo " * 6、修改年龄 *"
echo " * 7、修改电话 *"
echo " * 8、修改全部 *"
echo " * *"
echo " ******************************"
read -p "请选择需要修改的选项:" choice
n=1
old_info=""
for line in `cat user_info.txt`
do
#存下原来的数据
old_info=($line)
#将用户数据分隔成数组
OLD_IFS="$IFS"
IFS="-"
info=($line)
IFS="$OLD_IFS"
#echo "now id is : ${info[0]},input id is : $id"
if [ "$name" == "${info[1]}" ]
then
case $choice in
1)
read -p "请输入新的值:" value
user_info="$value-${info[1]}-${info[2]}-${info[3]}-${info[4]}-${info[5]}-${info[6]}"
;;
2)
read -p "请输入新的值:" value
user_info="${info[0]}-$value-${info[2]}-${info[3]}-${info[4]}-${info[5]}-${info[6]}"
;;
3)
read -p "请输入新的值:" value
user_info="${info[0]}-${info[1]}-$value-${info[3]}-${info[4]}-${info[5]}-${info[6]}"
;;
4)
read -p "请输入新的值:" value
user_info="${info[0]}-${info[1]}-${info[2]}-$value-${info[4]}-${info[5]}-${info[6]}"
;;
5)
read -p "请输入新的值:" value
user_info="${info[0]}-${info[1]}-${info[2]}-${info[3]}-$value-${info[5]}-${info[6]}"
;;
6)
read -p "请输入新的值:" value
user_info="${info[0]}-${info[1]}-${info[2]}-${info[3]}-${info[4]}-$value-${info[6]}"
;;
7)
read -p "请输入新的值:" value
user_info="${info[0]}-${info[1]}-${info[2]}-${info[3]}-${info[4]}-${info[5]}-$value"
;;
8)
echo "请输入新数据"
read -p "请输入ID:" ID
read -p "请输入用户名:" name
read -p "请输入密码:" password
read -p "请输入角色:" role
read -p "请输入性别:" sex
read -p "请输入年龄:" age
read -p "请输入电话:" phone
user_info="$ID-$name-$password-$role-$sex-$age-$phone"
;;
esac
success="true"
break
fi
success="not_found"
#echo "n = $n"
let n+=1
done
if [ $success == "not_found" ]
then
echo "可能没有找到该用户"
else
echo "原数据: $old_info"
echo "修改后: $user_info"
read -p "确认修改吗?(1确认,0取消):" ok
fi
if [ "$ok" == "1" ]
then
#删除这条数据
sed -i "${n}d" user_info.txt
#插入新数据
echo "$user_info" >> user_info.txt
elif [ "$ok" == "0" ]
then
success="quit"
echo "...取消操作"
fi
if [ $success == "true" ]
then
echo "更新成功"
fi
Select_user.sh
#!/bin/bash
success="false"
echo "====================================="
read -p "请输入要更新用户的用户名:" name
n=1
echo "用户信息如下"
echo -e 'ID\t用户名\t密码\t角色\t性别\t年龄\t电话'
for line in `cat user_info.txt`
do
#将用户数据分隔成数组
OLD_IFS="$IFS"
IFS="-"
info=($line)
IFS="$OLD_IFS"
#echo "now id is : ${info[0]},input name is : $name"
if [ "$name" == "${info[1]}" ]
then
success="true"
echo -e "${info[0]}\t${info[1]}\t${info[2]}\t${info[3]}\t${info[4]}\t${info[5]}\t${info[6]}"
break
fi
let n+=1
done
# echo "success is $success"
if [ $success != "true" ]
then
echo "查询失败,没有找到该用户"
fi
Select_all.sh
#!/bin/bash
success="false"
echo "======================================"
n=1
echo "用户信息如下"
echo -e "ID\t用户名\t密码\t角色\t性别\t年龄\t电话"
for line in `cat user_info.txt`
do
#将用户数据分隔成数组
OLD_IFS="$IFS"
IFS="-"
info=($line)
IFS="$OLD_IFS"
#echo "now id is : ${info[0]},input id is : $id"
if [ -n "$line" ]
then
success="true"
echo -e "${info[0]}\t${info[1]}\t${info[2]}\t${info[3]}\t${info[4]}\t${info[5]}\t${info[6]}"
fi
let n+=1
done
# echo "success is $success"
if [ $success != "true" ]
then
echo "查询失败,可能没有找到该用户"
fi
可能会出现的问题:
执行sh ./xxx.sh出现:“Syntax error: “(” unexpected”
解决方法
更多推荐
已为社区贡献3条内容
所有评论(0)