2016-04-07 10 views
0

Redis-benchmark sonucunu kabuk betiğinde ayrıştırmaya çalışıyorum, betiği yazarım ama yürütemedim.Bash: redis-benchmark sonucunu var oluşturmak için değişken garip dizgi oluştur

Çevre

$ 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 

Kabuk ayıklama gösterisi bazı bilgiler karıştırırlar.

$ 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: 

Bir şey özlüyor muyum?

Yorumlar

,

$ 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 

cevap

0

Eğer REDIS-Benchmark çıkışını düzeltmek mümkün olmayacaktır olursa neden bilmiyorum REDIS-kriter için sonuç şey garip, bu irade nedeniyle görünüyor hem doğru ve garip biçimleri ayrıştırmak:

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

Ama muhtemelen girişi düzeltmek gerekir: D

+0

Teşekkürler, girişi düzeltmek ne anlama geliyor? – linbo

+0

giriş, redis-benchmark –

+0

çıktısının anlamı, sanırım bu redis-benchmark hatası – linbo

İlgili konular