Shell
shell腳本中的bc計算有問題
在 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"
問題就解決了。