我正在編寫一個腳本來收集一些各種網絡統計信息。 我想要做的是從netstat -i命令中產生一些增量數據。陣列消失在bash腳本
該命令declare -a array
n=0
netstat -i | tail -n +3 | while read LINE; do
echo "Setting array[$n] to $LINE"
array[$n]=$LINE
echo "array now have ${#array[@]} entries"
let n=$n+1
done
echo "array now have ${#array[@]} entries"
輸出爲:
Setting array[0] to eth0 1500 0 4946794 0 0 0 2522971 0 0 0 BMRU
array now have 1 entries
Setting array[1] to lo 16436 0 25059 0 0 0 25059 0 0 0 LRU
array now have 2 entries
Setting array[2] to vmnet1 1500 0 6 0 0 0 1126 0 0 0 BMRU
array now have 3 entries
Setting array[3] to vmnet8 1500 0 955 0 0 0 1054 0 0 0 BMRU
array now have 4 entries
Setting array[4] to wlan0 1500 0 613879 0 0 0 351194 0 0 0 BMU
array now have 5 entries
array now have 0 entries
正如你所看到的,數組實際上while循環後消失
我用下面的bash代碼收集所需數據,我不明白爲什麼。
謝謝,第一個代碼完美工作。但數組在子外殼之外丟失。我懷疑這是意圖,但不適合我。 –
非常好。我更喜歡符合POSIX的方法,因爲它在開始時提供輸入數據,支持按時間順序排列的閱讀。 – Arthur
@Arthur你可以在開始時提供輸入數據。讀取LINE時,<<<(netstat ...);做......' – kojiro