输出结果与真实结果不符

来源:9-8 利用sed查找文件内容(下)

慕斯卡0112930

2024-10-25

原始文件内容:
#测试1
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

#测试2
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
bind-address = 0.0.0.0
datadir = /var/lib/mysql
basedir = /usr
tmpdir = /tmp
log-error = /var/log/mysql/error.log
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
innodb_buffer_pool_size = 2G
max_connections = 200
query_cache_size = 128M
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-storage-engine = InnoDB

#测试3
[mysqldump]
quick
quote-names
max_allowed_packet = 16M

#测试4
[mysql]
no-auto-rehash

#测试5
[isamchk]
key_buffer = 16M

#测试6
[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 2M
write_buffer = 2M

#测试7
[mysqlhotcopy]
interactive-timeout

根据以上配置文件,编写脚本,内容如下:
#/bin/bash

filename=/root/mzy/mysql.conf

function all_segment
{
echo “sed -n '/\[.*\]/p' $filename | sed -e 's/\[//g' -e 's/\]//g'
}

function count_items
{
items=sed -n '/\['$1'\]/,/\[.*\]/p' $filename | grep -v '\[.*\]'| grep -v '^#' | grep -v '^$'

    index=0
    for item in $items
    do
            index=`expr $index + 1`
    done
    echo $index

}

number=0

for count in all_segment
do
number=expr $number + 1
item_count=count_items $count
echo "$number: $count $item_count"
done

执行后输出结果:
1: client 6
2: mysqld 48
3: mysqldump 5
4: mysql 1
5: isamchk 3
6: myisamchk 12
7: mysqlhotcopy 1
结果内容最后一列数字与原始文件配置行不符,是哪里的问题。

写回答

1回答

酷田

2024-12-31

您好同学,您使用的测试系统是mac吗?
0
0

掌握Shell脚本编程 360架构师带你进阶Linux高手

30%知识讲解+70%实例操作 掌握Shell脚本编程能力

1647 学习 · 301 问题

查看课程