2010-06-08 102 views
0

netstat -an | grep hypen echo $ variable hypen | wc -l将netstat返回的值收集到变量中

如何收集的值netstat -an | grep echo $variable | wc -l 到varibale conn_count。

+0

@all,'| 'grep'之后的wc -l'当然应该是'grep ... -c',请参阅无用的'wc -l'奖励:http://partmaps.org/era/unix/award.html#wc – Wrikken 2010-06-09 02:41:06

回答

1

最大的可移植性使用反引号:

conn_count=`netstat -an | grep ${variable} | wc -l` 

如果你有一个更现代的外壳如bash,你可以使用$()代替:

conn_count=$(netstat -an | grep ${variable} | wc -l) 

$()符号是更好,因为它更容易nest:

foo=$(netstat -an | grep $(head /path/fo/foo)) 
+0

$ variable =“abc | efg | xyz rst | ghf | tcg” for i in $ variable do Conn_count = $(netstat -an | grep $(echo $ {i} | cut -d'|'-f3 )| wc -l) done 想找到第三个字段的netstat并将其收集到一个变量 – Kimi 2010-06-08 18:20:02

1

使用子shell“反引号”转义,if你希望能够使用它的SH,灰,及其变体:

thevariable=`netstat -an | grep echo $variable | wc -l` 

如果你要保证能够进入bash或zsh的,你可以使用$()语法来代替:

thevariable=$(netstat -an | grep echo $variable | wc -l) 

我认为第一个也适用于(t)csh,但我不确定,因为我不使用它们。

0

这将做到这一点的管子字符之间的每个值:

variable="abc|efg|xyz rst|ghf|tcg" 
saveIFS=$IFS 
IFS='|' 
for i in $variable 
do 
    Conn_count=$(netstat -an | grep "$i" | wc -l) 
done 
IFS=$saveIFS 

这将做它只有第三个值:

variable="abc|efg|xyz rst|ghf|tcg" 
saveIFS=$IFS 
IFS='|' 
i=($variable) 
IFS=$saveIFS 
Conn_count=$(netstat -an | grep "${i[2]}" | wc -l)