在 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')" 

相關內容