Shell-Script

在引用它們的腳本中更新配置文件?

  • March 19, 2015

我將配置文件添加到給定腳本沒有問題,但自動更新它們是另一回事。在這種情況下,我為腳本提供了一些變數,並且我希望腳本能夠更改配置文件提供的值。是否有一種標準方法可以更改正在執行的腳本中的變數值,然後相應地更新配置文件?我目前的方法是對包含變數的行進行 sed-ing 並更改其內容,但我覺得必須有更好的方法。

例如,想像一個程序生成一些任意文本文件:

配置文件中的行,定義程序可用的變數:

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

使用者選擇一個菜單選項,表明他們希望留在程序中,因為他們非常喜歡生成任意文本。對於程序的目前實例,簡單地將其設置為 false 很容易,但是更改配置文件本身的最佳方法是什麼,這樣使用者就不必在每次執行時返回並更改設置?

使用sed

從此文件開始:

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

將 true 更改為 false(並在終端上顯示新版本)的一種方法是使用 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

引用自:https://unix.stackexchange.com/questions/191051