请注意:
这纯粹是bash脚本
sed
这个问题,尽管它顺便提到了一些其他技术(MySQL、Docker等),作为上下文。
看着a
bash script
当官方
MySQL 8.0 Dockerfile
构建,我看到这个:
if [ -n "$MYSQL_LOG_CONSOLE" ] || [ -n "console" ]; then
# Don't touch bind-mounted config files
if ! cat /proc/1/mounts | grep "etc/my.cnf"; then
sed -i 's/^log-error=/#&/' /etc/my.cnf
fi
fi
…我试图弄清楚它的作用。有些事情对我来说没有意义,但这是来自MySQL Docker官方项目的,所以很明显他们知道自己在做什么。它
看
就像它说的:
-
检查是否调用了字符串变量
MYSQL_LOG_CONSOLE
不为null,或者如果硬编码字符串文字“console”不为null
-
如果其中之一为真,则搜索可用的装载信息(
proc/1/mounts
)看看是否
etc/my.cnf
其中引用了
-
如果
etc/my.cnf
不包含在
proc/1/挂载
,然后删除的所有实例
log-error
从内部
etc/my.cnf
首先,使用以下命令检查字符串文字“console”是否为null有什么意义
[ -n "console" ]
? 非空字符串文字怎么可能是…null?
但我的主要问题是
sed
:
sed -i 's/^log-error=/#&/' /etc/my.cnf
我在解释这个吗
sed
命令正确吗?
删除的所有实例
日志错误
从文件中。。。如果文件不存在?!我显然遗漏了什么,只是不确定是什么。提前感谢!