[[01: コマンドが見つかりません] エラーが if ステートメント行に表示されます。

[[01: コマンドが見つかりません] エラーが if ステートメント行に表示されます。

次のスクリプトの場合:

for f in $FILES
do

    fname="$(basename "${f}")"
    fn="${fname:6:2}"
    if [["$fn" == "01"]]; then #error here
        echo "yes"
    fi
done

ベストアンサー1

かなり単純な構文問題があります。以下のように、テスト構造の前後にスペースを追加します。

if [[ "$fn" == "01" ]]; then ...

動作する必要があります。

その理由は[[実際には次のとおりです。bashキーワードは演算子ではないので、「独立して」配置する必要があります(etc.に似ていますif)。

ファイルの1つの名前はです01。構文を使用すると、シェルはキーワードを確認し、ifその後に戻りコードが計算されるコマンドが来ると予想します。あなたのコードでは[[01コマンドと見なされますが、コマンドは存在しないようです。これはエラーメッセージの原因でもあります。

シェルスクリプトについてもっと詳しく知りたいbash(またはksh)(演算子をテストするために二重括弧を使用して表示されます)を使用しているように思われる場合は、次の点を確認してください。強打ガイド(@terdonの提案に基づいています)そして後で高度なバッシュスクリプトガイド(時々含まれているあまりよくない慣行のために「鍛えられた」場合)詳細情報を確認してください。

おすすめ記事