# 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 ```