在 Bash 脚本中使用 find 并检查文件是否存在

在 Bash 脚本中使用 find 并检查文件是否存在
 var= "$(find . -name 'gen*.bt2')" 


 if [ "$var" == "" ]
    then
         echo bad
    else
         echo great  
 fi

我收到错误

./script.sh:第 4 行:./gen.4.bt2 ./gen.rev.1.bt2 ./gen.rev.2.bt2 ./gen.1.bt2 ./gen.3.bt2 ./gen.2.bt2:没有这样的文件或目录 伟大的

但是,当我在终端中运行相同的代码时,文件会完美列出,没有任何错误。

有人可以纠正我吗,我哪里错了?

我需要检查某些文件是否存在,如果存在则继续。

答案1

问题是你的作业中的空间。 shell 对空格敏感。您的命令相当于:

var="" "./gen.4.bt2 ./gen.rev.1.bt2 ./gen.rev.2.bt2 ./gen.1.bt2 ./gen.3.bt2 ./gen.2.bt2" # output of find

您需要删除空格:

var="$(find . -name 'gen*.bt2')" 

相关内容