我在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
所有文件都存在
答案 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