Shell

shell腳本中的bc計算有問題

  • December 24, 2014

在 Ubuntu 14.04.1 64 位 LTS 上,我正在編寫一個 shell 腳本,如果我用一個變數而不是一個常量sequence來定義使用的開頭,我會得到非常奇怪的行為,並且計算器會出現很多錯誤。您可以執行以下程式碼片段來重現錯誤:for loop``bc

#!/bin/bash
S=0.030
F=0.150
N=30
DIFF=`echo $F - $S | bc -l`
dw=`echo $DIFF / $N | bc -l`
is=`echo $S / $dw | bc -l`
if=`echo $F / $dw | bc -l`
for i in `seq $is $if` 
   do
       w=`echo "scale=3; $i * $dw" | bc -l`
done

如果我將序列的開頭更改為常量,它可以完美執行,但是當它是變數時,輸出會出現問題,如下所示:

(standard_in) 1: syntax error
...
...
(standard_in) 1: syntax error

這種行為背後的原因可能是什麼?我想收到您的建議和意見。

問題原來是我的 Ubuntu 安裝中的小數點分隔符設置為,(逗號)而不是.(點)。我使用以下命令對其進行了更改:

sudo update-locale LC_NUMERIC="en_GB.UTF-8"

問題就解決了。

引用自:https://unix.stackexchange.com/questions/175709