shell
一、条件测试
1.条件测试命令
test命令:测试表达式是否成立,若成立返回0,否则返回其他数值
格式:
格式1: test 条件表达式
格式2:[ 条件表达式 ]
2.文件测试
-d :测试是否为目录(Directory)
-e :测试目录或文件是否存在(Exist)
-f : 测试是否为文件(File)
-r : 测试当前用户是否有权限读取(Read)
-w :测试当前用户是否有权限写入 (Write)
-x :测试当前用户是否有权限执行 (eXcute)
3.常用的测试操作符
-eq:等于(Equal)
-ne :不等于 (Not Equal)
-gt:大于 (Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于 (Lesser or Equal)
-ge:大于或等于 (Greater or Equal)
4.字符串比较
格式为:
格式1:[ 字符串1 = 字符串2 ]
格式2:[ 字符串1 != 字符串2 ]
格式3:[ -z 字符串 ]
=:字符串内容相同
!=:字符串内容不同,!号表示相反的意思
-z:字符串内容为空
二、if语句
1. 单分支结构
if 条件测试操作
then 命令序号
fi
-
针对目录模拟
[root@server2 ~]# vi mkdir.sh [root@server2 ~]# chmod +x mkdir.sh [root@server2 ~]# ./mkdir.sh [root@server2 ~]# ls -R /a [root@server2 ~]# cd / [root@server2 /]# ls -lh vi mkdir.sh #!/bin/bash # 创建目录 dir="/a/b" if [ ! -d $dir ] then mkdir -p $dir fi
-
针对用户模拟
[root@server2 ~]# echo $USER root [root@server2 ~]# su zjq [zjq@server2 root]$ sudo vi a.sh [zjq@server2 root]$ sudo chmod +x a.sh [zjq@server2 root]$ sudo ./a/sh #!/bin/bash # 判断当前用户是否为root 查看当前用户是否是root,不是报错 if [ ! “$USER” = “root” ] then echo "当前用户不是root" fi
2.双分支结构
格式:
if 条件测试操作 if 端口号是否在监听
then 命令序列1 → then 网站服务已在运行
else 命令序列2 else 启动httpd服务
fi fi
3.多分支结构
格式:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序号3
fi
三、case语句
1.case多分支结构
case 变量值 in case 分数 in
模式1) 85-100)
命令序列1 判为优秀
;; ; ;
模式2) → 70-84)
命令序列2 判为合格
; ; ; ;
.... ......
*) *)
默认命令序列 判为不合格
esac esac
- 用case判断字符
[root@server2 ~]# vi character.sh
[root@server2 ~]# chmod +x case.sh
[root@server2 ~]# ./character.sh
#!/bin/bash
判断输入的字符是哪种类型
read -p "请输入一个字符并按enter回车确认" key
case "$key" in
[a-z]|[A-Z]) 匹配 a-z 字母
echo "您输入的是字母."
;;
[0-9]) 匹配 0-9 数字
echo "您输入的是数字."
;;
*) 匹配任意字符
echo "您输入的是空格,功能键,其它控制字符."
exit 1
esac
- 使用case判断成绩
[root@server2 ~]# vi score.sh
[root@server2 ~]# chmod +x score.sh
[root@server2 ~]# ./score.sh
#!/bin/bash
成绩输入判断
read -p "成绩:" b
case "$b" in
100)
echo "满分"
;;
9[0-9])
echo "优秀"
;;
8[0-9])
echo "良"
;;
7[0-9])
echo "良好"
;;
6[0-9])
echo "合格"
;;
*)
echo "不及格"
esac