2

システム内の合計eth割り込みの数を取得するawkスクリプトがあります。

#!/bin/bash

FILE="/proc/interrupts"

awk 'NR==1 {
core_count = NF 
print "core count: ", core_count
next
}

/eth/ {
 for (i = 2; i <= 2+core_count; i++)
 totals[i-2] += $i
}

END {
print "Totals"
for (i = 0; i < core_count; i++)
printf("CPU%d: %d\n", i, totals[i])
}
' $FILE

これの最後にbashで、core_countとtotals配列があります。しかし、次に、これらの変数を使用する必要があります。スクリプトの残りの部分でどのように使用できますか?つまり、どのようにグローバル化できますか?

4

2 に答える 2

2

できません。それらをエコーアウトし、引き込みます。

{ read core_count ; read -a totals ; } < <(echo -e "2\n4 5")
于 2012-07-23T05:43:17.490 に答える
1
#!/bin/bash

FILE="/proc/interrupts"

output=$(awk 'NR==1 {
core_count = NF 
print core_count
next
}

/eth/ {
 for (i = 2; i <= 2+core_count; i++)
 totals[i-2] += $i 
}

END {
for (i = 0; i < core_count; i++)
  printf("%d\n", totals[i])
}
' $FILE)
core_count=$(echo $output | cut -d' ' -f1)
output=$(echo $output | sed 's/^[0-9]*//')
totals=(${output// / })
echo CC: $core_count total0 ${totals[0]} total1 ${totals[1]}
于 2012-07-23T06:00:31.023 に答える