这将检查文件是否存在:
#!/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
如何仅检查文件是否不存在?
当前回答
此shell脚本还可用于查找目录中的文件:
echo "enter file"
read -r a
if [ -s /home/trainee02/"$a" ]
then
echo "yes. file is there."
else
echo "sorry. file is not there."
fi
其他回答
测试命令(此处写为[)有一个“not”逻辑运算符!(感叹号):
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
使用!:否定测试中的表达式([是其别名)
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
相关的手册页是man-test,或者,对于内置的bash命令,相当于man[-或help-test或help]。
或者(不常用)您可以使用以下方法否定测试结果:
if ! [ -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
该语法在“管道”和“复合命令”部分的“man 1 bash”中进行了描述。
测试可能也很重要。它对我有用(基于Bash Shell:检查文件是否存在):
test -e FILENAME && echo "File exists" || echo "File doesn't exist"
此代码也有效。
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File '$FILE' Exists"
else
echo "The File '$FILE' Does Not Exist"
fi
在为未加引号的变量运行测试时,您应该小心,因为它可能会产生意外的结果:
$ [ -f ]
$ echo $?
0
$ [ -f "" ]
$ echo $?
1
建议通常将测试变量用双引号括起来:
#!/bin/sh
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist."
fi