gpt4 book ai didi

linux - (标准输入) 1 : parse error

转载 作者:可可西里 更新时间:2023-11-01 11:47:17 25 4
gpt4 key购买 nike

我正在编写一个快速脚本,用于根据从/proc/net/dev 中提取的数据计算各个接口(interface)的吞吐量,但我遇到了问题。它将它从字节转换为兆位。

这在我的 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)

当我运行它时,出现以下错误(来自 Debug模式):

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 本身,但实际上我不确定如何纠正它。

欢迎提出任何建议。

谢谢你的时间,

最佳答案

您不需要那些长管道,也不需要使用 bc

int1_byte_rx=$(awk -v int="$int1" '$0 ~ int {sum += $2} END {print sum}' "$logfile")
int1_byte_tx=$(awk -v int="$int1" '$0 ~ int {sum += $10} END {print sum}' "$logfile")
int1_rx_thrpt=$(awk -v int1_byte_rx="$int1_byte_rx" -v iter="$iterations" -v time="$time" 'BEGIN {printf "%12.2f", (int1_byte_rx * 0.00000762939453) / iter / (time * 60)}')
int1_tx_thrpt=$(awk -v int1_byte_tx="$int1_byte_tx" -v iter="$iterations" -v time="$time" 'BEGIN {printf "%12.2f", (int1_byte_tx * 0.00000762939453) / iter / (time * 60)}')

您可以像这样组合前两行:

read -r int1_byte_rx int1_byte_tx <<< $(awk -v int="$int1" '$0 ~ int {sumrx += $2; sumtx+= $10} END {print sumrx, sumtx}' "$logfile")

而且您只需阅读一次日志文件。

另一种选择是用 AWK 或其他支持浮点运算的语言(如 Python 或 Perl)编写整个脚本。

关于linux - (标准输入) 1 : parse error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com