首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法错误Bash命令bc

语法错误Bash命令bc
EN

Stack Overflow用户
提问于 2017-06-02 02:02:44
回答 1查看 1.8K关注 0票数 1

我在使用bc命令时遇到了问题。生成的输出为:

代码语言:javascript
复制
(standard_in) 2: syntax error

在这里我发布了我的代码,任何建议都将不胜感激。

代码语言:javascript
复制
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"

然后,执行脚本后,终端上的错误为

EN

回答 1

Stack Overflow用户

发布于 2017-06-02 02:44:11

问题是,当您的最后一行通过管道传输到bc时,其中没有换行符。

这可以很好地工作。

代码语言:javascript
复制
$ echo "scale=4; 2046/1024" | bc
1.9980
$ echo -e "scale=4; 2046/1024\n" | bc
1.9980

这个坏了

代码语言:javascript
复制
$ echo -n "scale=4; 2046/1024" | bc
(standard_in) 1: syntax error

我想你可以改成

代码语言:javascript
复制
contador=$(echo -e "scale=4; $contador+$paraulao\n" | bc)

这应该可以解决这个问题。另外,缩进并添加注释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44314273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档