![](https://www.alaica.com/wp-content/uploads/linux-55.png)
如何在类 Unix 操作系统下运行的 bash 中测试文本文件是否存在?
您需要使用 test 命令来检查文件类型并比较值。可以使用相同的命令来查看文件是否存在。语法如下:
测试 -e文件名 [ -e文件名] 测试 -f文件名 [ -f文件名]
以下命令将使用 bash 条件执行判断名为 /etc/hosts 的文本文件是否存在:
[ -f / etc / hosts ] && echo "找到" || 回显 “未找到”
输出示例:
成立
相同的代码可以转换为与 if..else..fi 一起使用,它允许根据测试命令的成功或失败进行选择:
#!/bin/bash file = "/etc/hosts" if [ -f " $file " ] then echo " $file found." 否则回 显 “未找到$文件。” 菲
文件测试操作员
如果文件存在,以下运算符返回 true:
-b 文件 FILE 存在并且是块特殊的 -c 文件 文件存在并且是特殊字符 -d 文件 FILE 存在并且是一个目录 -e 文件 文件已存在 -f 文件 FILE 存在并且是一个常规文件 -g 文件 文件存在并且已设置组 ID -G 文件 FILE 存在并且由有效组 ID 拥有 -h 文件 FILE 存在并且是符号链接(与 -L 相同) -k 文件 文件存在并设置了粘滞位 -L 文件 FILE 存在并且是符号链接(与 -h 相同) -O 文件 FILE 存在并且由有效用户 ID 拥有 -p 文件 FILE 存在并且是一个命名管道 -r 文件 文件存在并且已授予读取权限 -s 文件 文件存在且大小大于零 -S 文件 FILE 存在并且是一个套接字 -t FD 文件描述符 FD 在终端上打开 -u 文件 FILE 存在并且其 set-user-ID 位已设置 -w 文件 FILE 存在并授予写入权限 -x 文件 文件存在并授予执行(或搜索)权限
语法是相同的(有关详细信息,请参阅文件运算符(属性)比较):
if [ operator FileName ] then echo "FileName - 找到,在此处采取一些操作" else echo "FileName - 未找到,在此处采取一些操作" fi