Bashスクリプトで検索を使用し、ファイルが存在することを確認します。

Bashスクリプトで検索を使用し、ファイルが存在することを確認します。
 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

問題は課題の空間です。シェルは空白に敏感です。あなたのコマンドは次のとおりです。

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

おすすめ記事