Bashでディレクトリを繰り返し、特定のディレクトリ名をスキップします。

Bashでディレクトリを繰り返し、特定のディレクトリ名をスキップします。

特定のフォルダのディレクトリを繰り返しながら、特定のディレクトリ名をスキップしたいと思います。これを行うには、このbashスクリプトを作成しましたが、エラーが発生します。どこに間違っているのか教えてください。

for f in *
do
    if [ -d "$f" ]; then
        if [ -d "TEST"];then
        echo "skip TEST directory"
        continue
        fi
    echo "$f"
    fi
done    

TESTディレクトリをスキップしたいです。

ベストアンサー1

あなたのifステートメントが正しくありません。 2番目のifステートメントを次のように変更してみてください。

for f in *
do
    if [ -d "$f" ]; then # Modify to [[ ! -L "$f" && -d "$f" ]] to check only for directories and not symlinks since -d will also get symlinks
        if [ "$f" = "TEST" ]; then
            echo "Skipping $f dir"
            continue
        fi
        # Code ...
    fi
done

おすすめ記事