Shell
一個關於長表達式的bc問題
我想在 shell 中計算一個表達式。我使用以下程式碼:
pi=$(echo "scale=10; 4*a(1)" | bc -l) i=3 d=`expr (1+c($pi*($i/10)+$pi))/2 | bc -l`
但它說
bad pattern: (1+c(3.1415926532*(3/10)+3.1415926532))/2
為什麼?
因為您
expr
在您可能應該使用的最後一個命令中使用echo
.PS 我建議您在兩個命令中都使用該
$(…)
表單bc
(而不是…
)。
請注意,設置比例的位置會對計算產生影響。
這個腳本:
bc -l << \EOF scale = 10 pi = 4 * a(1) i = 3 (1 + c(pi * (i / 10) + pi)) / 2 EOF bc -l << \EOF pi = 4 * a(1) i = 3 scale = 10 (1 + c(pi * (i / 10) + pi)) / 2 EOF bc -l << \EOF pi = 4 * a(1) i = 3 r = (1 + c(pi * (i / 10) + pi)) / 2 scale = 10 r/1 EOF bc -l << \EOF scale = 100 pi = 4 * a(1) i = 3 r = (1 + c(pi * (i / 10) + pi)) / 2 scale = 15 r/1 EOF
輸出:
.2061073736 .2061073739 .2061073738 .206107373853763