linux - 测试文件是否存在
问题描述
如果文件存在,我会对给出的示例感到困惑。我想检查是否存在多个文件以便执行进一步的操作。
ls -al:
-rwxrwxrwx 1 root tomcat 6 Dec 16 11:25 documents_2019-12-12.tar.gz
echo < [ -e ./documents_2019-12-12.tar.gz ]:
bash: [: No such file or directory
有人可以告诉我我做错了什么吗?
编辑:我有一个包含两个文件的备份目录:
database_date.sql
documents_date.tar.gz
我需要检查给定日期的两个文件是否都可用。该目录应包含多个日期的这些文件对。
解决方案
您在这里遇到的是对使用特定语法的位置的误解。您的[ -e ./documents_2019-12-12.tar.gz ]
命令部分是特定if
于 bash 子句的语法。这是一个例子
if [ -e ./documents_2019-12-12.tar.gz ]
then
echo "File Exists!"
fi
方括号 [] 用于包围 if 语句正在执行的检查,并且-e
标志特定于这些if
检查。更多信息在这里http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
为了解释您看到的错误,<
操作员将文件放在右侧,并将内容提供给左侧的命令。在您的情况下,<
将其[
视为右侧的内容,因此我们尝试将其作为文件读取。这样的文件不存在,因此 bash 有助于告诉您存在错误(bash: [: No such file or directory
位),然后退出。
推荐阅读
- javascript - React 如何通过点击事件使用不同的状态
- c# - 二进制搜索数组以显示包含字符串字段的行
- python - 阅读.sec格式视频opencv
- flask - 在 index.html 上显示注册用户总数
- javascript - 如何保持位置:中心元素旁边的固定元素
- sql - 在 SQL 中向多个表添加列
- math - 如何编写一个方程式以使负回报 -100% 但不是 0 和正
- java - Java和JSerialComm 2.5.1库,串口通信问题
- excel - Excel VBA复制选定的工作表一次,然后只复制第一个工作表
- flutter - Dart 方法有错误但不返回错误