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:脚本选项后面的参数可任意指定多个用户并且用逗号隔开,密码同用户名;

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

脚本内容如下:

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

#!/bin/bash

#以下红色部分是用来判断脚本后面参数是否正确,即最多2个参数

if [ $# -lt 1 -o $# -gt 2 ]; then

echo "ARGUS is Bad,You use Script --help"

exit 8

elif [ $# -eq 1 -a $1 == ‘--add‘ ]; then

echo "ARGUS is Bad,You use Script --help"

exit 18

elif [ $# -eq 1 -a $1 == ‘--del‘ ]; then

echo "ARGUS is Bad,You use Script --help"

exit 16

fi

#以下黑色部分是用来判断是否添加用户

if [ $1 == ‘--add‘ ]; then

for I in `echo $2 | sed  ‘s/,/ /g‘`; do

if ! id $I &> /dev/null; then

useradd $I

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

echo "Add $I successfully"

else

echo "$I Exist"

fi

done

#以下蓝色部分是用来判断是否删除用户

elif [ $1 == ‘--del‘ ]; then

for I in `echo $2 | sed ‘s/,/ /g‘`; do

if id $I &> /dev/null; then

userdel -r $I

echo "Delete $I finishing"

else

echo "$I not exist"

fi

done

#以下黑色部分是用来判断是否寻求帮助信息

elif [ $1 == ‘--help‘ ]; then

echo "./admuser.sh --add user1,user2...|./admuser.sh --del user1,user2,...| ./admuser.sh --help"

else

echo "ARGs is error,Please Usage: --help"

fi

以下执行脚本进行测试效果:

./admuseradv   --add  user1,user2,user3    添加3个用户

./admuseradv   --del   user1,user2,user3    删除3个用户

./admuseradv    --help                                寻求帮助

./admuseradv  abcdefg                             选项或参数写错导致报错信息

时间: 2024-12-25 13:47:38

linux下Bash编程组合测试及编写脚本(五)的相关文章

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:脚本选

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编程循环语句特殊用法之编写脚本(十)

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下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编程之條件判斷详解(二)

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至

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编程之算术运算符详解(三)

shell算术运算表示如下: 1.let 算术运算表达式 let C=$A+$B 2.$[算术运算表达式] C=$[$A+$B] 3.$((算术运算表达式)) C=$(($A+$B)) 4.expr 各操作数及运算符之间要有空格,且要使用命令引用 C=`expr $A + $B` 举例说明: 1.指定一个用户,判断用户密码剩余使用期限是否已经小于警告期限: 如果小于警告期限,则显示"Password will expire --> Warning":否则,就显示"OK&