
Ubuntu 14.04.1 64ビットLTSでシェルスクリプトを作成しています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
この行動の理由は何ですか?私はあなたの提案とコメントを受けたいと思います。
答え1
,
問題は、私のUbuntuインストールの小数点区切りが(ドット)ではなく(カンマ)に設定されていることです.
。次のコマンドに変更しました。
sudo update-locale LC_NUMERIC="en_GB.UTF-8"
問題が解決しました。