![別のシェル スクリプトを使用して、複数のシェル スクリプトを 1 回で 1 つずつ実行する方法](https://rvso.com/image/1628441/%E5%88%A5%E3%81%AE%E3%82%B7%E3%82%A7%E3%83%AB%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%B7%E3%82%A7%E3%83%AB%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%201%20%E5%9B%9E%E3%81%A7%201%20%E3%81%A4%E3%81%9A%E3%81%A4%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
専門家の皆様、ちょっとした問題があります。ディレクトリ内にある同じ拡張子 (.sh) を持つ複数のシェル スクリプトを一度に実行しようとしています。これまで、以下のような一般的なスクリプトを作成しました。しかし、問題は、実行が完了せず、実行され続けることです。問題がどこで続くのかわかりません。専門家の方に調べていただければ幸いです。私の小さなコードは以下のとおりです。bash scriptone.sh、bash scriptkk.sh などを実行すると正常に動作しますが、手動で実行したくありません。ありがとうございます。
#!/bin/sh
for f in *.sh; do
bash "$f" -H
done
答え1
質問で参照している共通スクリプトにも拡張子があり.sh
、実行しようとしている他のすべてのスクリプトと同じディレクトリに存在する場合、.sh
共通スクリプトを再帰的に呼び出すため、すべてのファイルを無限にループすることになります。
この問題は、共通スクリプトを別の場所に移動したり、共通ではないスクリプトをすべて特定のサブディレクトリに配置して、共通スクリプトを変更してそこで見つけられるようにするなど、いくつかの方法で解決できます。