forループで各ディレクトリを繰り返す正しい方法は何ですか? [コピー]

forループで各ディレクトリを繰り返す正しい方法は何ですか? [コピー]

たとえば、この for ループでは

for var in ?????
do
    dummy command
done

私は現在存在するディレクトリ内のすべてのディレクトリを繰り返すことができますが、これは不明なディレクトリのリストなので、疑問符がある場所に各ディレクトリを書き込むことはできません。助けてくれてありがとう。

ベストアンサー1

最も簡単なのは、お客様の要件を満たすことです。」現在私がいるディレクトリのすべてのディレクトリを繰り返します。"、ワイルドカードのみを使用してください。

for d in */
do
    dummy_command "$d"
done

コマンドが末尾のスラッシュを処理できない場合$dに置き換えることができます。"$d""${d%/}"

コマンドが複数の引数を受け入れることができる場合は、ループをまったく繰り返す必要はありません。

dummy_command */

dummy_commandテストの例は簡単ですecho

気づくすべての場合にパターンが一致しない場合は、*/文字通りアスタリスクとスラッシュでコマンドに渡されます。これはほとんど確かにあなたが望むものではありません。

ループの上にこの行を追加すると問題を解決できますが、bashその時点から適用されることに注意してください。

shopt -s nullglob    # Expand unmatched wildcards to "nothing"

...相手が起こるshopt -u nullglobかスクリプトが終わるまで

おすすめ記事