我有一个文件包含人名,例如
Sam
Tom
Dad
Jack
我有一个目录包含name.txt
或name.zip
其中文件的形式不相同,例如
Dad.txt
Tom.zip
Jack.zip
如何查找 sam 不在目录中?
这是我的想法:
input="people_name"
while IFS= read -r line
do
if [ -f "/my_files/${line}.zip"]|| [ -f "/my_files/${line}.txt" ] ; then
echo "/${line} exists."
else
echo "/${line} does not exists."
fi
done < "$input"
输出应该是:
Sam does not exist
Tom exists
Dad exists
Jack exists
但终端输出:
Sam does not exist
Tom does not exists
Dad does not exists
Jack does not exists
答案1
当在拥有目录my_files
和文件的目录中运行时,此脚本有效people_name
:
#!/bin/bash
input="people_name"
while IFS= read -r line
do
if [ -f "my_files/${line}.zip" ] || [ -f "my_files/${line}.txt" ] ; then
echo "${line} exists."
else
echo "${line} does not exist."
fi
done < "$input"
使用此输入文件:
Sam
Tom
Dad
Jack
调整:
- 添加了“shebang”作为第一行来指示
bash
应该运行该脚本。 - 在if语句中添加了一些空格
- 删除了前缀斜杠,因为我认为您在根目录中没有该目录
my_files
,并且您不希望输出行以斜杠开头。