Shell day2
## 01 条件测试(上)
Shell脚本的智能化
- 是shell脚本获得识别能力?
- 为命令的执行提供最直接的识别依据
1. 文件的目录的读/写等状态
2. 数值的大小
3. 字符串是否匹配
4. 多条件组合
**test测试操作**
- 语法格式
- test 选项 参数
- [ 选项 参数 ]
- help test帮助文档
**字符串比较**
- 基本语法:
1. 是否为空 [ -z 字符串 ] 如果字符串为空则为真。
2. 等于 [ 字符串1 == 字符串2 ]
3. 不等于 [ 字符串1 != 字符串2 ] (取反)
```bash
-z 字符串 如果字符串为空则为真。
[root@system1 ~]# [ -z "$TT" ]
[root@system1 ~]# echo $?
0
[root@system1 ~]# [ "$USER" == tom ]
[root@system1 ~]# echo $?
1
[root@system1 ~]# [ "$USER" != root ]
[root@system1 ~]# echo $?
1
```
**整数值比较**
- [ 整数值1 操作符 整数值2 ]
|操作符|含义|
|-|-|
|-eq|等于equal|
|-ne|不等于not equal|
|-ge|大于或等于greater or equal|
|-le|小于或等于less or equal|
|-gt|大于greater than|
|-lt|小于less than|
判断当前系统登录用户个数
```bash
[root@system1 ~]# who
root tty2 2021-06-27 12:13 (tty2)
root pts/1 2021-06-30 09:35 (192.168.0.48)
[root@system1 ~]# [ $(who | wc -l) -le 5 ]
[root@system1 ~]# echo $?
0
```
**文件状态测试**
- [ 操作符 文件或目录 ]
|操作符|含义|
|-|-|
|-e|判断对象是否存在exist,存在为真|
|-d|判断对象是否为目录directory,是则为真|
|-f|判断对象是否为一般文件,是则为真|
|-r|判断当前用户是否可读read权限,是则为真|
|-w|判断当前用户是否有write权限,是则为真|
|-x|判断当前用户是否有excute权限,是则为真|
```bash
[root@system1 ~]# [ -e /etc/hosts ]
[root@system1 ~]# echo $?
0
[root@system1 ~]# [ -d /etc/hosts ]
[root@system1 ~]# echo $?
1
[root@system1 ~]# [ -f /etc/ ]
[root@system1 ~]# echo $?
1
[root@system1 ~]# ll -d /etc/hosts
-rw-r--r--. 1 root root 158 9月 10 2018 /etc/hosts
[root@system1 ~]# [ -x /etc/hosts ]
[root@system1 ~]# echo $?
1
```
## 02 条件测试(下)
## 03 if语句
## 04 for循环
## 05 while循环
## 06 综合案例