将配置文件添加到给定脚本中没有问题,但自动更新它们是另一回事。在本例中,我向脚本提供了一些变量,并且我希望脚本能够更改配置文件提供的值。是否有一种标准方法可以更改正在运行的脚本中变量的值,然后相应地更新配置文件?我当前的方法是对包含变量的行进行 sed-ing 并更改其内容,但我觉得必须有更好的方法。
例如,想象一个生成任意文本文件的程序:
配置文件中的行,定义程序可用的变量:
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(并在终端上显示新版本)的一种方法是使用 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