如果存在多个文件

时间:2019-04-12 12:22:56

标签: bash if-statement

我在bash脚本中有一个IF语句,该语句检查是否存在六个文件。

现金代码

if [ -f file1.txt ] && [ -f file2.txt ] && [ -f file3.txt ] && [ -f file4.txt ] && [ -f file5.txt ] && [ -f file6.txt ];
then
echo "Required Files Exist"
else
echo "Required Files Do Not Exist"
fi

预期结果

Required Files Exist

实际结果

Required Files Do Not Exist

所有文件都存在

2 个答案:

答案 0 :(得分:2)

如果实际上所有六个文件都位于当前目录中,则您的代码应该可以正常工作。

不过,您可能希望对其进行重构以减少代码重复。

all_exist () {
    local filename
    for filename; do
        test -f "$filename" && continue
        echo "$0: $filename does not exist - aborting" >&2
        return 1
    done
    return 0
}

all_exist file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt && echo "$0: all files exist" >&2

如果您的文件名真正单调,也许只是

all_exist file{1..6}.txt

答案 1 :(得分:0)

您从其他目录运行脚本。

例如:您在/root/中并运行脚本/root/script/script.sh

您将在/root/中搜索文件,但不在/root/script/中搜索文件。

在运行脚本之前尝试一下:touch file{1..6}.txt