linux下Bash编程case语句及编写脚本(八)

1.case语句,格式如下:

case 变量 in

值1)

语句1

...

;;  每分支语句以分号结束

值2)

语句2

...

;;

*)    其他,相当于if语句else

语句3

...

;;

esac   整条case语句结束

2.编写一个任意添加与删除用户的脚本,要求如下:

2.1:如果脚本选项是-a或--add:,将添加用户; 如果选项是-d或--del,将删除用户,

如果是-h或--help显示帮助信息,如果是-v或--verbose显示执行过程,否则不显示执行过程

2.2:脚本选项后面的参数可任意指定多个用户并且用逗号隔开,密码同用户名;

2.3:用户存在就提示不能添加,用户不存在就不能删除用户;尽可能有相关提示信息

vim admuser.sh  创建一个脚本文件:

#!/bin/bash

ADD=0 增加用户变量开关

DEL=0 删除用户变量开关

DEBUG=0 作为显示执行过程变量开关

#以下判断脚本后面的参数是否正确

for I in `seq 1 $#`; do

if [ $# -gt 0 ];then

case $1 in

-v|--verbose)

DEBUG=1

shift

;;

-h|--help)

echo "Usage:`basename $0` -v|--verbose | -h|--help | -a|--add user1,user2... -d|--del user1,user2..."

exit 0

;;

-a|--add)

ADD=1

ADDUSERS=$2

shift 2

;;

-d|--del)

DEL=1

DELUSERS=$2

shift 2

;;

*)

echo "Usage:`basename $0` -v|--verbose | -h|--help | -a|--add user1,user2... -d|--del user1,user2..."

exit 8

;;

esac

fi

done

#以下判断增加用户

if [ $ADD -eq 1 ]; then

for USER in `echo "$ADDUSERS" | sed ‘s#,# #g‘`; do  取出要添加用户列表

if ! id $USER &> /dev/null; then          判断用户是否存在,不存在则添加

useradd $USER

echo $USER | passwd --stdin $USER &> /dev/null

[ $DEBUG -eq 1 ] && echo "$USER add successfully"

else

[ $DEBUG -eq 1 ] && echo "$USER exist"

fi

done

fi

#以下判断删除用户

if [ $DEL -eq 1 ]; then

for USER in `echo "$DELUSERS" | sed ‘s/,/ /g‘`; do  取出要删除用户列表

if id $USER &> /dev/null; then           判断用户是否存在,存在则删除

userdel -r $USER

[ $DEBUG -eq 1 ] && echo "$USER del finished"

else

[ $DEBUG -eq 1 ] && echo "$USER no exist"

fi

done

fi

时间: 2024-12-17 23:29:56

linux下Bash编程case语句及编写脚本(八)的相关文章

linux下Bash编程组合测试及编写脚本(五)

linux下Bash编程组合测试及编写综合脚本(五) 1.Bash编程组合测试条件 -a: 与关系 -o: 或关系 !: 非关系 表示方法1:[ $# -gt 100 -a $# -le 500 ] 表示方法2:[ $# -gt 100 ] && [ $# -le 500 ] 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是--add:,将添加用户; 如果选项是--del,将删除用户,如果是--help显示帮助信息 2.2:脚本选项后面的参数可任意指定多个用户并且用

linux下Bash编程循环语句特殊用法之编写脚本(十)

linux下Bash编程while语句特殊用法之编写脚本(十) 1.循环控制: break:中断整个循环语句,即退出循环后执行脚本后面的语句 continue:中断当前本次循环,提前进入下一轮循环 exit:结束脚本运行 2.while死循环,即当不知道循环多少次时 格式 : while :; do 循环语句 done 3.while从输入重定向文件中每行读取并赋值给read变量 格式:  while read LINE;do 循环语句 done < 路径文件 4.实例脚本 4.1.找出/etc

linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)

1.循环语句结构总结 1.1.while语句当条件满足时,进入循环语句 while 条件; do 语句 done 1.2.until语句当条件不满足时,进入循环语句 until 条件; do 语句 done 1.3.for 变量 in 列表; do 循环体 done 1.4.for (( 表达式1; 条件 ; 表达2 )); do 循环体 done 2.编写如下脚本,要求是:通过ping命令测试1.1.1.1到1.1.1.30之间的所有主机是否在线, 如果在线,就显示"$IP is up.&qu

linux基础16-bash编程(case语句及脚本选项 )

(1) case语句:选择结构 case SWITCH in value1) statement ... ;; //双分号结尾. value2) statement ... ;; *) statement ... ;; esac //esac结尾. (2) shift参数说明: 执行shift命令后,位置变量($1-$9)中的命令行参数会依次向左传递. 例: #!/bin/bash # DEBUG=0 ADD=0 DEL=0 for I in `seq 0 $#`; do //解释:seqs 1

linux下Bash编程字符测试与for循环语句(五)

1.字符测试: ==:测试是否相等,相等为真,不等为假 !=: 测试是否不等,不等为真,等为假 >,<,>=,<= -n string: 测试指定字符串是否为空,空则真,不空则假 -z string: 测试指定字符串是否不空,不空为真,空则为假 2.for循环:进入条件,退出条件 for 变量 in 列表; do 循环体 done 生成列表: {1..100}:表示为1至100的数,步长为1 seq [起始数 [步进长度]] 结束数 例如: seq 1 100 默认步长为1 dec

Linux下Bash编程之变量详解(一)

1.语言分类: 1.1.静态语言:编译型语言 强类型:变量在使用前,必须事先声明,甚至还需要初始化: 编写的程序事先转换成可执行格式 代表有:C.C++.JAVA.C# 动态语言:解释型语言 弱类型:变量用时声明,甚至不区分类型: 编写的程序边解释边执行 代表有: PHP.SHELL.python.perl 1.2.面向过程编程语言:代表有 Shell, C 1.3.面向对象编程语言: 代表有 JAVA, Python, perl, C++ 结论:shell属于弱类型编程语言 2.shell编程

linux下Bash编程之数组Array详解

1.Array数组与变量概念与区别 变量是一段内存空间,并且变量与变量之间是多数是不连续的内存空间 Array数组是由多个变量组成,数组中的变量称为元素,数组中的元素是连续的内存空间 2.声明数组 declare -a 数组名 例如:声明一个数组STU并初始化值 写法1: declare -a STU STU[0]=Willow STU[1}=Tom STU[2]=Redhat 写法2: STU=(Willow Tom Redhat) #元素之间用空格隔开,元素从0开始依次赋值,不能跳跃 写法3

Linux下Bash编程之條件判斷详解(二)

bash中实现条件判断: 条件测试类型:整数,字符,文件 条件测试的表达式: [ 表達式 ]  進行整數判斷 [[ 表達式 ]] 進行整數判斷 test 表達式 整数比较: -eq: 测试两个整数是否相等: -ne: 测试两个整数是否不等:不等,为真:相等,为假: -gt: 测试一个数是否大于另一个数:大于,为真:否则,为假: -lt: 测试一个数是否小于另一个数:小于,为真:否则,为假: -ge: 大于或等于 -le:小于或等于 命令的间逻辑关系: 逻辑与: && 第一个条件为真时,第二

Linux下Bash编程之位置和特殊变量(四)

1.bash位置变量: $1, $2, ...第1个参数,第二个参数,... shift 轮询替换,剔除 举例说明:利用脚本解释位置变量的意思,创建如下脚本: nano shift.sh 创建一个脚本文件,新增以下内容 #!/bin/bash # if [ $# -lt 5 ]; then   脚本后面参数不少于5个 echo "./shift.sh ARG1....ARG5" exit 5 fi echo "ARGS:$1 $2 $3 $4 $5" 分别显示第1至