スクリプトを介して複数のプロファイルを実行するには?

スクリプトを介して複数のプロファイルを実行するには?

設定ファイルから変数を取得するbashスクリプトを作成しました。次のようにコマンドラインから渡します。

./my_script.sh ./config1.conf

引き続き実行する必要がある構成をさらに作成し、すべての構成を完了するには多くのコマンドを実行する必要があります。 rsyslogなど、01-first_config.conf、10-config_ten.conf、20-config_twenty.confなどの番号を指定して、すべての設定でスクリプトを実行する方法があるかどうか疑問に思います。以下を試しましたが、最初のファイルのみが実行されます。

./my_script.sh ./*.conf

すべての変数を別々のセクションを持つファイルに入れることもできますが、各セクションには基本的にスクリプトに必要なすべての変数の完全なリストがあるので、それを行う方法がわかりません。前の部分が完了したら、スクリプトを介して各部分を渡す方法がわかりません。

答え1

rsyslogこれをスクリプトの内部で実行するのか、外部で実行するのかを決定する必要があります。欲しいなら

./my_script.sh ./*.conf

作業するには、複数のパラメータを受け入れるようにスクリプトを調整する必要があります。それはまるで

for config_file; do
    . "$config_file"
done

または、次のファイルを含むディレクトリをハードコードまたは転送します。

for config_file in /path/to/configs/*.conf; do
    . "$config_file"
done

答え2

これにより、./my_script.sh ./*.confglobが./my_script.sh ./a.conf ./b.conf ./etc...conf

./my_script.shglob の各ファイルに対して開始するには、次のような場合に適しています。

$ ls -1 ./*.conf | while read CONF; do ./my_script.sh "$CONF"; done

説明:ls -1globを拡張するために使用されます(1行に1ファイル)。while read CONF各行に対してループを開始します。


あるいは、拡張されたglobを含むと、./my_script.sh ./*.confスクリプト内のスペースで区切られた個々の位置引数に対応する、、、、...を使用できます。$*$1$2$3

関連情報