設定ファイルから変数を取得する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 ./*.conf
globが./my_script.sh ./a.conf ./b.conf ./etc...conf
。
./my_script.sh
glob の各ファイルに対して開始するには、次のような場合に適しています。
$ ls -1 ./*.conf | while read CONF; do ./my_script.sh "$CONF"; done
説明:ls -1
globを拡張するために使用されます(1行に1ファイル)。while read CONF
各行に対してループを開始します。
あるいは、拡張されたglobを含むと、./my_script.sh ./*.conf
スクリプト内のスペースで区切られた個々の位置引数に対応する、、、、...を使用できます。$*
$1
$2
$3