# shell判断文件存在
**文件夹不存在则创建**
```shell
if [ ! -d "/workdir/" ]; then
mkdir /workdir
else
echo "文件夹已存在"
fi
```
**文件存在则删除**
```bash
if [ ! -f "/workdir/app.py" ]; then
echo "文件不存在"
else
rm -f /workdir/app.py
fi
```
## 文件比较符
```bash
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新 [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧 [ "/data/file1" -ot "/data/file2" ]
```
## 数值比较符
```bash
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
```
## 字符串比较符
| 运算符 | 说明 |
| ------ | ------------------------------------------ |
| = | 检测两个字符串是否相等,相等返回 true |
| != | 检测两个字符串是否不相等,不相等返回 true |
| -z | 检测字符串长度是否为0,为0返回 true |
| -n | 检测字符串长度是否不为 0,不为 0 返回 true |
| $ | 检测字符串是否为空,不为空返回 true |
实例
```shell
#!/bin/bash
#wangyuedong
a="abc"
b="123"
if [ $a = $b ]
then
echo "$a等于$b"
else
echo "$a不等于$b"
fi
if [ $a != $b ]
then
echo "$a不等于$b"
else
echo "$a等于$b"
fi
if [ -z $a ]
then
echo "$a字符长度为零"
else
echo "$a字符长度不为零"
fi
if [ -n "$a" ]
then
echo "-n $a : 字符串长度不为 0"
else
echo "-n $a : 字符串长度为 0"
fi
if [ $a ]
then
echo "$a : 字符串不为空"
else
echo "$a : 字符串为空"
fi
```