想在SHELL中把一个命令的输出保存在一个变量中,这样就可以一次调用,多次使用结果。但出现麻烦了。
比如想统计某一时刻网口数据包收发的情况,用ifconfig+grep过滤需要分别两次,但此时RXTX都已经改变。如果用outbuf=`ifconfig`保存你会发现echo $outbuf变成这样了
eth0 Link encap:Ethernet HWaddr 00:0c:29:66:1a:2d inet addr:192.168.95.128 Bcast:192.168.95.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe66:1a2d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:728045 errors:0 dropped:0 overruns:0 frame:0 TX packets:754529 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:135205752 (135.2 MB) TX bytes:251721983 (251.7 MB) Interrupt:19 Base address:0x2024 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:104 errors:0 dropped:0 overruns:0 frame:0 TX packets:104 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:8900 (8.9 KB) TX bytes:8900 (8.9 KB)
这可不是我想要的。
通过反复试验,可以这样来保存:
outbuf="`ifconfig eth0`"
echo "$outbuf"
注意上面的"号哦。得到结果为:
eth0 Link encap:Ethernet HWaddr 00:0c:29:66:1a:2d
inet addr:192.168.95.128 Bcast:192.168.95.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe66:1a2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:728023 errors:0 dropped:0 overruns:0 frame:0
TX packets:754513 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:135203758 (135.2 MB) TX bytes:251719335 (251.7 MB)
Interrupt:19 Base address:0x2024