/proc/net/dev から取得したデータから個々のインターフェイスのスループットを計算するための簡単なスクリプトを書いていますが、問題が発生しています。バイトからメガビットに変換します。
これは私のubuntuサーバー(3.2.0カーネル)で動作していますが、これを古いデバイス(2.6.18時代)で実行しようとすると動作しません。何が間違っているのかわかりません。
これが私のコードのスニペットです:
int1_byte_rx=`cat $logfile | grep $int1 | awk '{print $2}' | awk '{sum+=$1} END {print sum}'`
int1_byte_tx=`cat $logfile | grep $int1 | awk '{print $10}' | awk '{sum+=$1} END {print sum}'`
int1_rx_thrpt=$(echo "($int1_byte_rx * 0.00000762939453) / $iterations / ($time * 60)" | bc -l)
int1_tx_thrpt=$(echo "($int1_byte_tx * 0.00000762939453) / $iterations / ($time * 60)" | bc -l)
これを実行すると、(デバッグ モードから) 次のエラーが表示されます。
int1_rx_thrpt=$(echo "($int1_byte_rx * 0.00000762939453) / $iterations / ($time * 60)" | bc -l)
echo "($int1_byte_rx * 0.00000762939453) / $iterations / ($time * 60)" | bc -l
++ echo '(1.13417e+10 * 0.00000762939453) / 57 / (5 * 60)'
++ bc -l
(standard_in) 1: parse error
(standard_in) 1: parse error
+ int1_rx_thrpt=
int1_tx_thrpt=$(echo "($int1_byte_tx * 0.00000762939453) / $iterations / ($time * 60)" | bc -l)
echo "($int1_byte_tx * 0.00000762939453) / $iterations / ($time * 60)" | bc -l
++ echo '(9.78048e+09 * 0.00000762939453) / 57 / (5 * 60)'
++ bc -l
(standard_in) 1: parse error
(standard_in) 1: parse error
問題を bc 自体にさかのぼることができましたが、実際にそれを修正する方法がわかりません。
どんなアドバイスでも大歓迎です。
御時間ありがとうございます、