我在使用bc命令时遇到了问题。生成的输出为:
(standard_in) 2: syntax error在这里我发布了我的代码,任何建议都将不胜感激。
value="100%" # the threshold to cause a break out
kb="kB/s"
mb="MB/s" # strings to mask out
conversor=1024 # kb->mb conversion
contador=0 # initalize our total in megabytes
for ((x=3; x<=${#array[@]}; x+=5)); do
paraula=${array[$x]};
if [[ $paraula =~ .*kB.* ]]; then
paraula=${paraula%$kb}
paraula=$(echo "scale=4; $paraula/$conversor" | bc) # convert to $mb
contador=$(echo "scale=4; $contador+$paraula" | bc)
echo "Counting: "$contador
else
paraula=${paraula%$mb}
contador=$(echo "scale=4; $contador+$paraula" | bc)
echo "Counting: "$contador
fi
if [[ " ${array[$x]} " =~ " $value " ]]; then
break;
fi
echo "Value : ${array[$x]} ";
done
echo "final value: $contador"然后,执行脚本后,终端上的错误为

发布于 2017-06-02 02:44:11
问题是,当您的最后一行通过管道传输到bc时,其中没有换行符。
这可以很好地工作。
$ echo "scale=4; 2046/1024" | bc
1.9980
$ echo -e "scale=4; 2046/1024\n" | bc
1.9980这个坏了
$ echo -n "scale=4; 2046/1024" | bc
(standard_in) 1: syntax error我想你可以改成
contador=$(echo -e "scale=4; $contador+$paraulao\n" | bc)这应该可以解决这个问题。另外,缩进并添加注释。
https://stackoverflow.com/questions/44314273
复制相似问题