我想只阅读netstat的第一行,即解释每列含义的行:
Proto Local Address Foreign Address State
但是,当我执行以下操作时:
netstat | egrep -i "^\s*(tcp|udp)" | {
read line
echo 'Here is the first line ' $line
}
我只获得第一行连接:
Here is the first line TCP <Local_addr> <Foreign_addre> ESTABLISHED
我如何获得这一行?
我在Windows 7机器上运行Cygwin。谢谢。
答案 0 :(得分:1)
要将任何命令的第一个输出行(例如netstat
)读入shell变量line
,请使用:
read -r line < <(netstat| head -n1)
此处不需要使用head
,但会加快速度。
上述的副作用是在将行分配给line
之前删除任何前导或尾随空格。这可能是一个优势。如果要保留空白,请使用IFS= read -r line < <(netstat| head -n1)
。
构造< <(...)
称为进程替换。它需要bash或其他高级shell。请注意,两个<
之间的空格是必不可少的。