構成ファイルを参照するスクリプトで構成ファイルを更新しますか?

構成ファイルを参照するスクリプトで構成ファイルを更新しますか?

特定のスクリプトに設定ファイルを追加するには問題はありませんが、自動的に更新することは別の問題です。この場合、スクリプトにいくつかの変数を提供しており、スクリプトが設定ファイルで提供する値を変更できるようにしたいと思います。実行中のスクリプトで変数の値を変更し、それに応じて設定ファイルを更新する標準的な方法はありますか?私の現在のアプローチは、変数を含む行をsedしてその内容を変更することですが、より良い方法があるはずです。

たとえば、任意のテキストファイルを生成するプログラムを想像してみてください。
プログラムで使用可能な変数を定義する構成ファイルの行:

EXIT_ON_GEN="true" //exit on successful generation of text file if true

ユーザーはランダムなテキスト生成が大好きなので、プログラムに滞在したいことを示すメニューオプションを選択します。プログラムの現在のインスタンスに対して単にfalseに設定するのは簡単ですが、ユーザーが実行するたびに戻って設定を変更する必要がないように、構成ファイル自体を変更する最善の方法は何ですか?

ベストアンサー1

使用sed

このファイルから始めてください。

$ cat >file
EXIT_ON_GEN="true" //exit on successful generation of text file if true

trueをfalseに変更し、端末に新しいバージョンを表示する1つの方法はsedを使用することです。

$ sed 's/^EXIT_ON_GEN=[^[:space:]]*/EXIT_ON_GEN="false"/' file
EXIT_ON_GEN="false" //exit on successful generation of text file if true

ファイルを現在の場所から変更するには、次の-iオプションを使用します。

$ sed -i 's/^EXIT_ON_GEN=[^[:space:]]*/EXIT_ON_GEN="false"/' file

使用awk

$ awk -F'"' -v OFS='"' '/^EXIT_ON_GEN/{$2="false"} 1' file
EXIT_ON_GEN="false" //exit on successful generation of text file if true

おすすめ記事