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”
解决方法

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐