簡體   English   中英

語法錯誤Bash命令bc

[英]syntax error Bash command bc

我的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"

然后,執行腳本后終端上的錯誤是

錯誤

問題是,當通過管道傳輸到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)

那應該解決它。 此外,縮進並添加注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM