2017-06-20 81 views
0

我在编写监视硬盘上的操作数量的程序。来自linux命令的处理结果

#!/bin/bash 

while true; 
do 
    operations=$(iostat -dx /dev/mapper/kaliMichu--vg-home) 
    echo "$operations" 
    sleep 5 
done 

所以我用iostat。 其实我只对一些参数感兴趣,例如w/s。 我如何能赶上它的值到变量e.g WS = $ W/s_value

+1

尝试运行= $(iostat -dx/dev/mapper/kaliMichu -vg-home | awk'NR> 3 {print $ 5}')'其中'5'是'w的结果列号/ s'。 –

+1

这就是我一直在寻找的!奇迹般有效。如果你发布这个答案,我会接受它 – Michu93

回答

2
#!/bin/bash 

while true; 
do 
    operations=$(iostat -dx /dev/mapper/kaliMichu--vg-home|awk 'NR>3{print $5}') 
    echo "$operations" 
    sleep 5 
done 

这里,awk是filterning所需的列给你的。

+0

如果我强烈地想要得到两个参数怎么办?可以一次调用iostat并使用不同值创建两个变量? – Michu93

+0

可以使用eval或declare命令。然而,对两个不同的列运行命令是明智的。 –

+0

为什么它是明智的? – Michu93