首页 > 解决方案 > 如果存在多个文件

问题描述

我在 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

所有文件都存在

标签: bashif-statement

解决方案


如果当前目录中确实存在所有六个文件,您的代码应该可以正常工作。

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

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

推荐阅读