![シェルでループを避ける必要があるのはなぜですか? [コピー]](https://linux33.com/image/63801/%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E9%81%BF%E3%81%91%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
次のリンクでは、シェルでループを使用しないことをお勧めします。
なぜこれですか?以下は、この回答が見つかったときに偶然見たループの例です。
find /etc/postinstall -name '*.sh' | while read script
do
echo Running $script ...
$script
mv $script $script.done
done
答え1
シェルループが最善のアプローチと見なされない2つのアプリケーションタイプを考えることができます。最初はデータ処理です。多くのツール(たとえば、、sed
などawk
)perl
は暗黙的にループを実行し、パフォーマンスが向上します。 2つ目は(例コードのように)いくつかのコードがファイルセットに対して実行されている場合です。スイッチをfind
使用すると-exec
、問題やオーバーヘッドが少ない状態でコマンドを実行できます(シェルでもあります)。より多くのケースがあるかもしれませんが、言及された2つのケースはすでに有益です。つまり、シェルループは本質的に悪くはありません。上記の2つのような他のオプションを検討してください。
答え2
Shellはひどいプログラミング言語ですが、非常に便利です。私は多くのシェルスクリプトを書いて、時にはループを使います。実行に数時間かかるスクリプトがあります。別のものに書き直す必要があります。シェルスクリプトにループがある場合は、完全に管理できなくなる前にスクリプトを再構築することを考えてみましょう。