mysqladmin proc status | grep "Threads"
输出:
Uptime: 2304 Threads: 14 Questions: 2652099 Slow queries: 0 Opens: 48791 Flush tables: 3 Open tables: 4000 Queries per second avg: 1151.08
我想设置它,使$mysqlthread
在运行echo $mysqlthread
后输出14
可能最简单的方法是使用Perl而不是grep。
mysqladmin proc status | perl -nle'/Threads: (d+)/ && print $1'
perl -n表示"遍历每一行输入"。
perl -l表示在每个print
"的末尾打印一个n
perl -e表示"这是我的程序";
/Threads: (d+)/
表示"matchThreads:
后跟一个或多个数字。print $1
表示"打印我找到的数字,如d+
周围的括号所示。
使用grep
$ mysqlthread=$(mysqladmin proc status | grep -Po 'Threads: Kd+')
$ echo "$mysqlthread"
14
有很多方法可以解决这个问题。这是
mysqladmin proc status | grep "Threads" | tr -s ' ' | cut -d' ' -f4
带-s
标志的tr
命令用于将所有连续的多个空格转换为单个空格。然后,cut
命令返回第4个字段,使用单个空格作为分隔符。
管道命令的优点是可以交互式地完成这个过程。当你不确定使用哪个标志时,手册页可以提供帮助:man grep
,man tr
,man cut
等。
添加awk来分割输出,
mysqlthread=$(mysqladmin proc status | grep "Threads" | awk '{print $4}')