【问题标题】:Bash: store redis-benchmark result to var generate strange stringBash:将redis-benchmark结果存储到var生成奇怪的字符串
【发布时间】:2016-07-28 01:48:57
【问题描述】:

我尝试在 shell 脚本中解析 redis-benchmark 结果,我编写了脚本但执行失败。

环境

$ bash --version
GNU bash, version 4.2.24(1)-release (x86_64-pc-linux-gnu)
$ cat /etc/issue
Ubuntu 12.04 LTS \n \l
$ dpkg -l |grep redis
2:2.8.19-rwky1~precise
$ cat demo.sh
OUTPUT=`redis-benchmark -n 1000 -r 100000 -d 32 -c 30 -t GET -p 6379 -q |grep 'per second'`
R=$(echo "$OUTPUT" | cut -f 1 -d'.')
S=$(echo $R | awk '{print $2}')
echo $S

Shell 调试显示一些令人困惑的信息。

$ bash -x demo.sh
++ redis-benchmark -n 1000 -r 100000 -d 32 -c 30 -t GET -p 6379 -q
++ grep 'per second'
GET: 166666.67 requests per second'
GET: 166666.67 requests per second'
++ cut -f 1 -d.
GET: 166666'an
++ echo GET: $'-nan\rGET:' 166666
++ awk '{print $2}'
+ S=$'-nan\rGET:'
+ echo $'-nan\rGET:'
GET:

我错过了什么吗?

评论

看起来由于redis-benchmark的结果有些奇怪,不知道为什么

$ redis-benchmark -n 1000 -r 100000 -d 32 -c 30 -t GET -p 6379 -q |grep per > todo
$ vim todo 
GET: -nan^MGET: 166666.67 requests per second

【问题讨论】:

    标签: linux bash shell command


    【解决方案1】:

    如果您无法修复 redis-benchmark 输出,这将解析正确和奇怪的格式:

    redis-benchmark -n 1000 -r 100000 -d 32 -c 30 -t GET -p 6379 -q | grep 'per second' | sed 's/.*GET: \(.*\) requests .*/\1/'
    

    但您可能应该修复输入:D

    【讨论】:

    • 谢谢,修复输入法是什么意思?
    猜你喜欢
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2020-04-09
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多