我遇到了bc命令的问题。产生的输出是:语法错误Bash命令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"
然后,终端上的错误执行脚本后
你可以简化成[mcve]吗?你可能会从一行代码中得到同样的错误,它只会调用'bc'。 –
考虑使用'bash -x yourscript'来记录脚本所做的一切,找到它首先出错的地方。如果您希望跟踪更容易一些,您可以将值分配给包含行号的“PS4”;例如,你可以运行一行:'PS4 =':$ {LINENO} +'bash -x yourscript'。 (请注意,出于安全考虑,如果该脚本以root用户身份运行,则必须在脚本本身内设置PS4')。 –
顺便说一句,请添加上述请求的日志作为文本的问题,而不是截图。看到接受的答案[为什么不要在提问时上传代码的图像?](https://meta.stackoverflow.com/a/285557/14122) –