2010-06-08 5 views
0

netstat -an | grep hypen echo $ variable hypen | wc -lcollecte la valeur retournée par netstat dans une variable

Comment collecter la valeur de netstat -an | grep echo $variable | wc -l à un compteur_variable.

+0

@all, '| wc -l' après 'grep' devrait bien sûr être' grep ... -c', voir l'utilisation inutile de 'wc -l' award: http://partmaps.org/era/unix/award.html#wc – Wrikken

Répondre

1

Utilisez des backticks pour une portabilité maximale:

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

Si vous avez une coquille plus moderne, comme bash, vous pouvez utiliser $() à la place:

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

notation $() est préférable car il est plus facile de nid:

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

$ variable = "abc | efg | xyz rst | ghf | tcg" pour i dans $ variable do do_count = $ (netstat -an | grep $ (echo $ {i} | couper -d '|' -f3) | wc -l) fait voulez trouver le netstat du troisième champ et le collecter à un variable – Kimi

1

Utilisez l'échappement "backticks" du sous-shell, si vous voulez être en mesure de l'utiliser pour sh, cendres, et des variantes de celui-ci:

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

Si vous accès garanti à bash ou zsh, vous pouvez utiliser la syntaxe $() à la place:

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

Je pense que le premier fonctionne également avec (t) csh, mais je ne suis pas sûr car je ne les utilise pas.

0

Cela fera pour chaque valeur entre le tube caractères:

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 

Cela fera pour que la troisième valeur:

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