如何将 xdpdump 的输出保存到变量中。我只是想保存捕获的数据包数量。
root@front:/home/ubuntu# timeout 2s xdpdump -i ens3 -w lol.pcap
listening on ens3, ingress XDP program ID 192 func xdp_filter, capture mode entry, capture size 262144 bytes
385449 packets captured
0 packets dropped by perf ring
我想保存我们在变量中捕获的数据包上获得的任何值。上面的例子是 385449。我如何使用 grep、awk 或 sed 来做到这一点?
当我用这个的时候
#!/bin/bash
var=$(timeout 2s xdpdump -i ens3 -w lol.pcap | awk '/packets captured/{print $1}')
echo $var
bash -x script.sh 的输出是
root@front:/home/ubuntu# bash -x d.sh
++ timeout 2s xdpdump -i ens3 -w lol.pcap
++ awk '/packets captured/{print $1}'
listening on ens3, ingress XDP program ID 1330 func xdp_filter, capture mode entry, capture size 262144 bytes
369588 packets captured
0 packets dropped by perf ring
+ var=
+ echo
答案1
var=$(timeout 2s xdpdump -i ens3 -w lol.pcap | awk '/packets captured/{print $1}')
或者如果您在问题中显示的第一个命令的输出转到 stderr 而不是 stdout 那么:
var=$(timeout 2s xdpdump -i ens3 -w lol.pcap 2>&1 | awk '/packets captured/{print $1}')