shell习题-带选项的用户脚本


要求如下:

1 只支持三个选项 ‘–del’ ‘–add’ –help输入其他选项报错。
2 使用‘–add’需要验证用户名是否存在,存在则反馈存在。且不添加。 不存在则创建该用户,切>添加与该用户名相同的密码。并且反馈。
3 使用‘–del’ 需要验证用户名是否存在,存在则删除用户及其家目录。不存在则反馈该用户不存>在。
4 –help 选项反馈出使用方法
5 支持以,分隔   一次删除多个或者添加多个用户。
6 能用echo $?  检测脚本执行情况  成功删除或者添加为0,报错信息为其他数字。
7 能以,分割。一次性添加或者 删除多个用户。  例如 adddel.sh –add user1,user2,user3…….
8 不允许存在明显bug。

参考答案

#!/bin/bash
#written by aming.

if [ $# -eq 0 -o $# -gt 2 ]
then
    echo "use $0 --add username or $0 --del username or $0 --help."
    exit 1
fi

case $1 in
    --add)
        n=0
        for u in `echo $2|sed 's/,/ /g'`; do
            if awk -F: '{print $1}' /etc/passwd |grep -qw "$u"
            then
               echo "The user $u exist."
            else
                useradd $u
                echo -e "$u\n$u"|passwd $u >/dev/null 2>&1
                echo "The user $u added successfully."
                n=$[$n+1]
            fi
        done

        if [ $n -eq 0 ]; then
            exit 2
        fi
        ;;

    --del)
        n=0
        for u in `echo $2|sed 's/,/ /g'`; do
            if awk -F: '{print $1}' /etc/passwd|grep -qw "$u"
            then
               userdel -r $u
                echo "The user $u deleted successfully."
                n=$[$n+1]
            else
                echo "The user $u not exist."
            fi
        done

        if [ $n -eq 0 ]; then
                exit 3
        fi
        ;;

    --help)
        echo -e "--add can add user,and the passwd is the same as username.     
    It can add multiuser such as --add user1,user2,user3..."
        echo "--del cat delete user.It can delete user such as --del user1,user2,user3..."
        ;;

    *)
        echo "use $0 --add username or $0 --del username or $0 --help."
        exit 1
        ;;
esac