shell解析my.cnf配置文件

Posted 人生不设限

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell解析my.cnf配置文件相关的知识,希望对你有一定的参考价值。

my.cnf配置格式如下

vi my.cnf
[client]
port=3306
socket=/tmp/mysql.socket

[mysqld]
port=3306
server-id=1
datadir=/usr/local/mysql/data

[mysqld_safe]
port=3306

more parseMy.sh

#!/bin/bash
cnf=$(cd `dirname $0`;pwd)"/my.cnf"

#得到区块数组
g_sec=(`sed -n ‘/\[*\]/p‘ $cnf |grep -v ‘^#‘|tr -d []`)
#sed -n ‘/\[*\]/p‘ 得到包含[*]的行
#grep -v ‘^#‘ 去掉#打头的行
#tr -d [] 去掉[]
#g_sec=(client mysqld mysqld_safe)

for ((i=0;i<${#g_sec[@]};i++))
do
echo "解析No."$i
sec_name=${g_sec[i]}
g_names=(`sed -n ‘/\[‘$sec_name‘\]/,/\[/p‘ $cnf|grep -Ev ‘\[|\]|^$|^#‘|awk -F ‘=‘ ‘{print $1}‘`)
#sed -n ‘/\[‘$sec_name‘\]/,/\[/p‘ 得到从[$sec_name]到临近[的所有行
#grep -Ev ‘\[|\]|^$|^#‘ 去掉包含[或]的行 去掉空行 去掉#打头的行
#awk -F ‘=‘ ‘{print $1}‘`得到=号前面字符

g_values=(`sed -n ‘/\[‘$sec_name‘\]/,/\[/p‘ $cnf|grep -Ev ‘\[|\]|^$|^#‘|awk -F ‘=‘ ‘{print $2}‘`)
#awk -F ‘=‘ ‘{print $1}‘`得到=号后面字符

for ((j=0;j<${#g_names[@]};j++))
do
echo ${g_names[$j]}" "${g_values[$j]}
done

done

























以上是关于shell解析my.cnf配置文件的主要内容,如果未能解决你的问题,请参考以下文章

17MySQL生产环境my.cnf配置文件解析

mysql进阶简单解析

MySQL配置文件生效顺序

详解MySql的配置文件my.cnf

MySQL配置文件my.ini或my.cnf的位置

mysql 查看当前使用的配置文件my.cnf的方法