2010-08-23 98 views
2

mysqladmin命令以字节为单位返回值。如果大于1 MB(1048576字节),我希望看到以MB为单位的值。计算MB的字节数

$ mysqladmin variables 
+---------------------------------+----------------------------------+ 
| Variable_name     | Value       | 
+---------------------------------+----------------------------------+ 
| auto_increment_increment  | 1        | 
| auto_increment_offset   | 1        | 
... 
| interactive_timeout    | 14400       | 
| join_buffer_size    | 10481664       | 
| key_buffer_size     | 1073741824      | 

我可以一次保存和计算每个变量。但是,如何以MB显示所有值?

myval1=$(((`mysqladmin variables | grep '\<key_buffer_size\>' | awk '{print $4}'`)/1048576)) 

回答

2

关闭我的头顶,像这样的工作:

#!/bin/bash 

if [ "$1" = variables ]; then 
    /moved/elsewhere/mysqladmin $* | awk '{ sz=$4; if (sz>1048576) 
     { sz=sz/1048576 "Mb"; } 
     print $1 $2 $3 sz $5; }' 
else 
    /moved/elsewhere/mysqladmin $* 
fi 
+0

有趣!是否可以轮流? – shantanuo 2010-08-23 12:01:49

+0

是的 - 但awk没有内置的轮功能 - 请参阅http://www.gnu.org/manual/gawk/html_node/Round-Function.html – symcbean 2010-08-23 12:08:57

+0

该页面显示printf可以舍入(尽管不准确)。你能让我知道如何在这里添加printf吗? – shantanuo 2010-08-23 12:13:50