Shell-Script
在引用它們的腳本中更新配置文件?
我將配置文件添加到給定腳本沒有問題,但自動更新它們是另一回事。在這種情況下,我為腳本提供了一些變數,並且我希望腳本能夠更改配置文件提供的值。是否有一種標準方法可以更改正在執行的腳本中的變數值,然後相應地更新配置文件?我目前的方法是對包含變數的行進行 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