ファイル読み取り操作内で動的コンテンツを生成できますか?

ファイル読み取り操作内で動的コンテンツを生成できますか?

ファイル名に基づいてファイルコンテンツを作成できますか?

.conf内容がファイル名にのみ依存する同様のファイルがたくさん必要です。

「動的」ファイルを作成してそれを指すシンボリックリンクを作成できますか?

多分fifoは解決策かもしれませんが、ビルドスクリプトからファイル名を取得できません。

zsh$ mkfifo ./dynamic.conf
zsh$ ln -s ./dynamic.conf ./case1.conf
zsh$ echo $0  > ./dynamic.conf & 
zsh$ cat ./case1.conf

私はzsh(が必要ですcase1.conf)を持っています。

ベストアンサー1

全く異なるアプローチ私が知っているのは、最後の答えが目を転がすようにするということだけだから。

inotifyこのチュートリアルでは、これは実際にはLinuxにのみ適用されることを意味します。問題は完全に解決されます。個々の設定ファイルはまだ存在しますが、自動的に再生成されます。毎回マスターを変える

master.confすべてのセクション、サブセクションなどを含む「デフォルト」プロファイルがあります。inotifyスクリプトが変更されたら、そのファイルをすべて書き換えるようにスクリプトを設定します。 (競合状態を避けるために、ファイルをサブディレクトリに保存し、ディレクトリを置き換えて「コミット」を実行するなど、いくつかの追加トリックを実行できます。)

~からhttps://stackoverflow.com/q/5316178/3849157デフォルトのPerlスクリプトを取得します。

my $inotify = Linux::Inotify2->new;
$inotify->watch("/etc/master.conf", IN_MODIFY);
while () {
  my @events = $inotify->read;
  unless (@events > 0){
    print "read error: $!";
    last ;
  }

  foreach my $event (@events) {
    next unless $event->IN_MODIFY;
    # 1. TODO: RE-READ IN THE CONFIG FILE
    # (example)
    $config_hash = &parse_master_file;

    # 2. TODO: RE-GENERATE YOUR CONFIG FILES
    # (example)
    for $section qw( section1 section2 misc ) {
        open(S,"> /etc/${section}.conf")
        print S &dump_config($config_hash,$section)
        close(S)
    }
  }
}

実行はあなた次第parse_master_fileです。dump_configまた、メインループでスリープを呼び出す必要があるかもしれません。それ以外の場合は、CPUに点灯します。

おすすめ記事