下面是自己书写的批处理增加和删除用户的脚本程序

#!/bin/bash
#根据文件(包含用户名和密码)批处理增加用户,默认文件为users.list
#根据文件(包含用户名和一个是否删除用户主目录的参数)批处理删除用户
#默认文件为users.list
#用法: $0 {add|del}  [UserListFile]
#Author:huangyandong
#Web: http://huangyandong.blog.51cto.com
#Date:2011/10/19
#History: 2011/10/19 release 1
#
#文件格式:
#(1).增加用户的文件格式:每一行一个用户
#UserName [Passwd]
#注:若没有指定密码则默认密码为用户名
#(2).删除用户的文件格式 :每一行一个用户
#UserName [y|Y|1]
#注:第二个参数是设置是否删除用户主目录,默认否


#变量设置
#指定执行的动作,默认为批量增加用户,也可以指定为del(批量删除)
Action=${1:-add}
#指定包含用户名的文件列表,默认为users.list
UserListFile=${2:-users.list}
#设置程序
AWK=gawk
PASSWD=passwd
USERADD=useradd
USERDEL=userdel

#若指定的文件列表不可读则提示并退出
if [ ! -r $UserListFile ];then
        echo "$UserListFile 不存在" && exit 1;
fi

#获取用户列表
UserList=$(${AWK} '{print $1}' $UserListFile)

#函数定义
toupper()
{
#转换为大写
local str="$*"
echo $str |tr [:lower:] [:upper:]
}

useradd_batch()
{
#批处理增加用户
for everyuser in $UserList ;do
        #获取用户密码
        password=$(cat $UserListFile |grep "$everyuser "|${AWK} '{print $2}')
        #通过在文件/etc/passwd中查找用户判断用户是否存在,
        #若用户存在则不创建,否则创建用户
        if cat /etc/passwd|grep "^${everyuser}:" >/dev/null ;then
                echo "用户 $everyuser 已存在,不创建该用户"
        else
                ${USERADD} $everyuser && echo "创建用户$everyuser 成功"
        fi
        #判断是否有指定密码,若没指定则设置默认密码为用户名
        if [ -z "$password" ];then
                password=${everyuser}
        fi
        #修改用户密码
        echo "${password}"|${PASSWD} --stdin $everyuser >/dev/null
done
}

userdel_batch()
{
#批处理删除用户
for delusr in $UserList ;do
        #获取额外选项,若为Y,y,1则连同主目录一起删除
        local y=$(cat $UserListFile |grep "$delusr "|${AWK} '{print $2}')
        case $y in
        Y|y|1)
                R="-r"
                ;;
        *)
                R=''
                ;;
        esac
        #判断用户是否存在,若存在则删除,若不存在则提示
        if cat /etc/passwd|grep "^${delusr}:" >/dev/null ;then
                ${USERDEL} ${R} $delusr  && echo "删除用户 $delusr 成功"
        else
                echo "用户$delusr 不存在"
        fi
done
}

#主函数
case $(toupper $Action) in
DEL)
        userdel_batch
        ;;
*)
        useradd_batch
        ;;
esac