forループ内でコマンド動作を見つける

forループ内でコマンド動作を見つける

Bashスクリプトには次のコード部分があります。

for dir in $(find /etc/aaa -type d -maxdepth 1)
do
 #my code
done

#my code

ディレクトリが存在しない場合は、/etc/aaaいくつかのエラーでスクリプトを終了したいと思います。

forループを実行する前にディレクトリが存在するかどうかをテストできることを知っています。

/etc/aaaしかし、ディレクトリが存在しない場合は終了する必要があり、それ以外の場合はスクリプトを続行させる他の方法(forループ内の短いメソッド)があるかどうかを知りたいです。

現在の場合、スクリプトはエラーを提供し、find: /etc/aaa: No such file or directoryforループの後に残りを続けます。

forループの終了状態も0です。

ベストアンサー1

次のことができます。

if dirs="$(find /etc/aaa -type dir -maxdepth 1 2> /dev/null)"; then
    for dir in ${dirs}; do
        # Your code
    done
    # Your code
else
    # find failed, generate error
fi

おすすめ記事