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