Shell

一個關於長表達式的bc問題

  • December 15, 2015

我想在 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

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