シェルでループを避ける必要があるのはなぜですか? [コピー]

シェルでループを避ける必要があるのはなぜですか? [コピー]

次のリンクでは、シェルでループを使用しないことをお勧めします。

forループ範囲内のbash変数

なぜこれですか?以下は、この回答が見つかったときに偶然見たループの例です。

find /etc/postinstall -name '*.sh' | while read script
do
  echo Running $script ...
  $script
  mv $script $script.done
done

ベストアンサー1

シェルループが最善のアプローチと見なされない2つのアプリケーションタイプを考えることができます。最初はデータ処理です​​。多くのツール(たとえば、、sedなどawkperlは暗黙的にループを実行し、パフォーマンスが向上します。 2つ目は(例コードのように)いくつかのコードがファイルセットに対して実行されている場合です。スイッチをfind使用すると-exec、問題やオーバーヘッドが少ない状態でコマンドを実行できます(シェルでもあります)。より多くのケースがあるかもしれませんが、言及された2つのケースはすでに有益です。つまり、シェルループは本質的に悪くはありません。上記の2つのような他のオプションを検討してください。

おすすめ記事