这将检查文件是否存在:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
如何仅检查文件是否不存在?
这将检查文件是否存在:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
如何仅检查文件是否不存在?
当前回答
envfile=.env
if [ ! -f "$envfile" ]
then
echo "$envfile does not exist"
exit 1
fi
其他回答
测试命令(此处写为[)有一个“not”逻辑运算符!(感叹号):
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Bash文件测试
-b filename-阻止特殊文件-c filename-特殊字符文件-d directoryname-检查目录是否存在-e filename-检查文件是否存在,无论其类型(节点、目录、套接字等)-f filename-检查常规文件是否存在,而不是目录-G文件名-检查文件是否存在并且由有效组ID拥有-G文件名set group id-如果文件存在并且是set group id,则为True-k文件名-粘滞位-L文件名-符号链接-O filename-如果文件存在并且由有效用户id拥有,则为True-r filename-检查文件是否可读-S filename-检查文件是否为套接字-s filename-检查文件大小是否为非零-u filename-检查是否设置了文件集用户id位-w filename-检查文件是否可写-x filename-检查文件是否可执行
如何使用:
#!/bin/bash
file=./file
if [ -e "$file" ]; then
echo "File exists"
else
echo "File does not exist"
fi
可以使用!操作人员
#!/bin/bash
file=./file
if [ ! -e "$file" ]; then
echo "File does not exist"
else
echo "File exists"
fi
如果要使用test而不是[],则可以使用!要获得否定:
if ! test "$FILE"; then
echo "does not exist"
fi
此代码也有效。
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File '$FILE' Exists"
else
echo "The File '$FILE' Does Not Exist"
fi
有三种不同的方法可以做到这一点:
用bash否定退出状态(没有其他答案这么说):如果[-e“$file”];然后echo“文件不存在”传真或:! [-e“$file”]&&echo“文件不存在”在测试命令中否定测试[(这是之前大多数答案给出的方式):如果[!-e“$file”];然后echo“文件不存在”传真或:[!-e“$file”]&&echo“文件不存在”在测试结果为阴性时采取行动(||而不是&&):仅限:[-e“$file”]||echo“文件不存在”这看起来很愚蠢(IMO),除非您的代码必须可移植到缺少管道否定运算符(!)的Bourne shell(如Solaris 10或更早版本的/bin/sh),否则不要使用它:如果[-e“$file”];然后:其他的echo“文件不存在”传真