【shell】Shell脚本中的if判断条件和文件测试操作符
👻创作者:丶重明
👻创作时间:2025年8月30日
👻擅长领域:运维
目录
- -e:检查文件或目录是否存在
- -d:检查路径是否为一个目录
- -f:检查路径是否为一个常规文件
- -r、-w、-x:检查文件的读写执行权限
- -s:检查文件是否存在且非空
- -z:用于检查字符串是否为空
在Shell脚本中,if
语句是最常用的条件判断结构之一,在实际应用中,我们常常需要检查文件的存在与属性,例如是否是目录、是否是普通文件、是否可读可写等。
Shell 提供了一系列的文件测试操作符,帮助我们轻松实现这些判断。
-e:检查文件或目录是否存在
-d:检查路径是否为目录
-f:检查路径是否为常规文件
-r:检查文件是否可读
-w:检查文件是否可写
-x:检查文件是否可执行
-s:检查文件是否存在且非空
-z:检查字符串是否为空
-n:检查字符串是否非空
!:用于反转测试结果
-e:检查文件或目录是否存在
-e
操作符用于检查指定的文件或目录是否存在。
它是最基本的文件测试操作符,适用于所有类型的文件和目录。
if [ -e /path/to/file ]; thenecho "文件或目录存在"
elseecho "文件或目录不存在"
fi
-d:检查路径是否为一个目录
-d
操作符用于检查指定路径是否是一个目录。
如果路径是目录,则返回 true,否则返回 false。
if [ -d "/data" ]; thenecho "已经存在"
elsemkdir /dataecho "/data 目录已创建"
fi
-f:检查路径是否为一个常规文件
-f
操作符用于检查指定路径是否是一个常规文件(普通文件)。
它不会检查符号链接、设备文件等其他特殊文件类型。
if [ -f "/data/file.txt" ]; thenecho "文件已存在"
elsetouch /data/file.txtecho "文件已创建"
fi
-r、-w、-x:检查文件的读写执行权限
-r、-w、-x
用于检查文件是否具有读写执行权限
FILE="/data/test.sh"
if [ -x "$FILE" ]; thenecho "$FILE 可执行"
elseecho "$FILE 不可执行"
fi
-s:检查文件是否存在且非空
-s
操作符用于检查文件是否存在并且大小大于0。
如果文件存在且非空,则返回 true,否则返回 false。
FILE="test.txt"# 判断文件是否存在
if [ -e "$FILE" ]; then# 文件存在,判断是否为空if [ -s "$FILE" ]; thenecho "$FILE 存在且非空"elseecho "$FILE 存在但为空,正在删除..."rm "$FILE" # 删除空文件fi
elseecho "$FILE 不存在"
fi
-z:用于检查字符串是否为空
-z
用于检查字符串是否为空(长度为0)。
text=""# 判断字符串是否为空
if [ -z "$text" ]; thenecho "字符串为空"
elseecho "字符串不为空"
fi