一、条件判断式语句
1、按照文件类型进行判断
两种判断格式
(1):[root@localhost ~]# test -e /root/install.log
注:echo $? 证明上一条命令执行
(2):[root@localhost ~]# [ -e /root/install.log ]
注:第一个判断命令如果正确执行,则打印“yes“,否则打印”no“。
注:中括号两边加上空格。
2、按照文件权限进行判断
(1):[root@localhost ~]# [ -w cjj.txt ] && echo "yes" || echo "no"
# 判断文件是否拥有写权限
3、两个文件之间进行比较
[root@localhost ~]# ln /root/cjj.txt /tmp/stu.txt
# 创建个硬连接
[root@localhost ~]# [ /root/cjj.txt -ef /home/stu.txt ] && echo "yes" || echo "no"
# 查看两个文件是不是硬连接,inode号相同
4、两个整数之间比较
[root@localhost ~]# [ 23 -ge 22] && echo "yes" || echo "no"
# 判断23是否大于等于22,当然是啦。
[root@localhost ~]# [ 23 -le 22] && echo "yes" || echo "no"
# 判断23是否大于等于22,当然不是。
5、字符串判断
(1):[root@localhost ~]# name=cjj
# 给name变量赋值
[root@localhost ~]# [ -z "$name" ] && echo "yes" || echo "no"
no
# 判断name变量是否为空,因为不能为空,所以返回no
[root@localhost ~]# name=“” 时
(2):aa=11
bb=22
# 给变量aa和bb赋值
[root@localhost ~]# [ "$aa" == "bb" ] && echo "yes" || echo "no"
no
# 判断两个变量的值是否相等,明显相等,所以返回no
注:"aa" "bb" 既是字符串也是整数,可以用 = 也可以用 == ,建议用 ==
6、多重条件语句
[root@localhost ~]# aa=11
[root@localhost ~]# [ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"
[root@localhost ~]# no
# 判断变量aa是否有值,同时判断变量aa是否大于23
# 因为变量aa的值大于23,所以虽然第一个判断值为真,返回的结果也是假
二、单分支if语句
if [ 条件判断式 ];then
程序
fi
或者:
if [ 条件判断式 ]
then
程序
fi
注意:
(1):if 语句使用 fi 结尾,和一般语言使用大括号结尾不同
(2):[ 条件判断式 ] 就是使用 test 命令判断,所以中括号和条件判断式之间必须有空格
(3): then 后面跟符合条件之后执行的程序,可以放在 [ ] 之后,用" ; "分割.也可以换行写入,就不需要" ; "了
判断分区使用率
三、双分支 if 条件语句
if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的另一个程序
fi
例子:判断apache服务是不是在运行
注:提取含有httpd的行,剔除含有grep的行。
注:给脚本起名时要避开httpd这个关键字,不然会一直检测到有httpd服务进程
四、多分支if语句
if [ 条件判断式1 ]
then
当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]
then
当条件判断式2成立时,执行程序2
……更多条件……
else
当所有条件都不成立时,最后执行此程序
fi
五、多分支 case 条件语句
case 语句和 if…elif…else语句一样都是多分支条件语句,不过和 if 多分支条件语句不同的是,case 语句只能判断一种条件关系,而 if 语句可以判断多种条件关系。
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
… 省略其它分支 …
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注:倾向于做选择列表
六、for 循环
for 变量 in 值1 值2 值3
do
程序
done
简单 for 循环
七、批量添加删除指定数量的用户
添加用户
删除用户
八、while循环和until循环
1、while循环
while循环是不定循环,也称作条件循环。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。这就和for的固定循环不太一样了。
while [ 条件判断式 ]
do
程序
done
2、until循环
until循环,和while循环相反,until循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
until [ 条件判断式 ]
do
程序
done