写在前文,shell脚本有时候报错一些奇奇怪怪的错误,在检查这些错误之前,先排查一下编码格式
在编辑模式下set ff 查看编码格式是不是unix
1.判断文件夹是否存在 -d 判断当前文件夹是否存在 else 不存在
if [ -d "/root/shellTest1" ];then
echo "文件夹已经存在"
else
echo "文件夹不存在"
mkdir "/root/shellTest1"
fi
2.判断文件是否存在 -f 判断当前文件是否存在
if [ -f "/root/a.txt" ];then
echo "文件已经存在"
else
echo "文件不存在"
mkdir "/root/a.txt"
fi
-d和-f都表示存在的话,如果表示相反意思的话可以通过加上!来反转意思if [ ! -d "/root/a.txt" ];then
注意:空格不能去掉
-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为软链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-n
判断一个变量是否是否有值
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新 [
"/data/file1"
-nt
"/data/file2"
]
-ot 判断file1是否比file2旧 [
"/data/file1"
-ot
"/data/file2"
]
-------------------------------------------------20210110 更新
多个目录是否存在
3、判断多个目录是否都存在
#!/bin/bash
if [ -d "/opt/softwares" -o -d "/opt/etc" ]; then
echo "两个文件夹都存在"
else
echo "两个文件夹不是都存在"
fi
3、判断多个文件是否都存在
#!/bin/bash
if [ -f "/root/a.sh" -a -f "/root/a.txt" ]; then
echo "两个文件都存在"
else
echo "两个文件不是都存在"
fi