2010-06-08 104 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)