如何检查文件或目录是否存在于 Bash Shell 脚本中

从 Bash 脚本检查文件或目录是否存在

Bash 用于在 Linux 中自动执行定期执行的命令。用于对文件/目录进行操作的命令是非常常用的,通常在我们执行这样的命令之前,我们需要检查特定的文件或目录是否存在。让我们看看如何执行此检查。

语法和用法

文件

检查文件是否存在, 使用以下语法:

[ -F  ]

表达方式 [ -F ] 返回 0,即成功,如果 确实存在,如果不存在,则返回非零状态。通常,这用作 如果 陈述。

如果 [ -f ] 然后 fi

否定返回值,只需在 -F 使用否定运算符 (!).

如果 [ ! -f ] 然后 fi

在这种情况下,如果文件满足条件 不存在, 因为返回的非零状态 (false) 将被否定并被视为 0 (true)。

请注意,如果要检查的文件在当前目录中不存在而存在于其他目录中,则应提及文件的完整路径,而不仅仅是文件名。

目录

用于检查文件的类似语法用于检查目录。

[ -d ]

与文件的语句类似,此语句返回 0,即成功,如果目录 存在,并且非零,即如果不存在则返回失败状态。这也常用于 如果 陈述条件。

如果 [ -d ] 然后 fi

要否定返回的状态,请在 -d 使用否定运算符 (!).

如果 [ ! -d ] 然后 fi

在这种情况下,如果目录不存在,条件将满足(状态 0),如果目录存在,则条件将失败(状态非零)。

如前所述,对于文件,如果要检查的目录存在于其他位置而不是当前目录,则需要输入整个目录路径,而不仅仅是目录名称。

💡 括号语法 ( [...] ) 这里使用的实际上是一个名为 测试.选项 -F-d 是这个命令的特点。有关更多信息,请参阅测试手册页( 男子测试 ).

从 Bash 脚本检查

在上面的例子中,我们直接在终端上使用了语法。每当遇到循环或条件语句 (如果 在我们的例子中),它继续提示并让用户输入继续块。

可以在 Bash 脚本内部使用相同的语法。

#!/bin/bash 在开始指定执行文件时要使用的解释器。尽管 Bash 是当今最常用的 shell,但有些用户确实更喜欢 shell,例如 zsh,应该在此文件的开头指定它来代替 bash。

授予执行权限 对于这个文件,运行:

chmod +x 测试.sh

最后, 执行文件, 跑:

./test.sh