仅当配置文件显示未处于生产模式时才发出警报或执行脚本

仅当配置文件显示未处于生产模式时才发出警报或执行脚本

我想通过运行特定脚本(例如 )来测试正在开发的软件script file.ext。但我被告知,如果配置文件(例如file.conf)包含表明系统处于生产模式的特定字符串(不是带有前导 # 的注释),则不允许我运行该脚本。

所以在 bash 中,我怎样才能做类似的事情

如果file1.conf包含一个字符串in production并且该字符串不是以下形式, something ... # something in production something则执行script file1.ext

in production或者,每次指定文件包含 string而不是注释时,我是否可以以某种方式收到警报?

我想我需要以某种方式使用该命令inotifywait。如果有一个脚本不仅可以检查文件file1.conf,而且每次带有扩展名的文件.conf显示我处于生产模式时都会发出警报,这也很好。

答案1

实现这一目标的一种方法是使用grep,例如

grep "^[^#]* in production " file.conf || script file.ext

||仅当其前面的部分不存在且退出代码为 0 且grep仅当找到其模式(第一个参数)时退出代码为 0 时,才会执行后面的部分。

我选择了一个简单的图案"^[^#]* in production "。该字符^代表行的开头,[^#]代表任何字符,但#量词*表示可以有任意数量的字符。模式的其余部分只是您希望标记生产模式的文本。

为了避免grep产生所有输出,您可以将其发送到/dev/null

grep "^[^#]* in production " file.conf > /dev/null || script file.ext

如果您想打印一条消息,如果您处于生产模式并且脚本未运行,您可以这样做

grep "^[^#]* in production " file.conf > /dev/null && \
    echo "We are in production mode. The script was not run." || \
    script file.ext

相关内容