2016-07-19 10 views
1

私は0.5の増分でbashスクリプトでforループを実行しようとします。このスクリプトは、ドイツの浮動システムで出力します。 例:ドイツ語から英語のfloatシステムをbashに

for i in $(seq 2.0 0.5 4.0) 
do 
echo $i 
done 

ことができます出力は次のとおりです。

2,0 
2,5 
3,0 
3,5 
4,0 

私は私のファイルのほとんどは、これらの数字に基づいて命名されているので、これを修正する必要があります。このエラーで、私のスクリプトはそのようなファイルを読むことができません。助言がありますか ?

+0

'echo $ {i /、/。}' –

+2

'LANG = en_US;を使用してください。 $(seq 2.0 0.5 4.0)のiのために。 LANG = en_US.UTF-8 echo "$ i";完了しました – anubhava

+0

私は学んだ何か新しいことをありがとう。 – PythonNoob

答えて

0
echo "${i/,/.}" # Recommend double quoting the variables. 

トリックを行います。私たちがここで行ったことはシェル[ parameter expansion ]です。

1

これは、おそらくロケール設定、具体的にはLC_NUMERICが原因です。私は、システムにインストールされているものロケールを知らない

$ locale | grep LC_NUMERIC 
LC_NUMERIC="en_US.UTF-8" 

:私はあなたが記述の症状が表示されていない私のシステム、オン

。デフォルトのロケールでは小数点にカンマを使用すると考えられます。 "C"ロケールは.を使用します。

LC_NUMERIC=C seq 2.0 0.5 4.0 

seq 2.0 0.5 4.0 

を変更すると、トリックを行う必要があります。

あなたは、一般的に.ではなく,を使用したい場合は、あなたがあなたのシェル起動ファイル(.bashrc、または.bash_profile、または何でも)で$LC_NUMERICを設定することを検討することがあります。

+0

あまりにもうまくいった – PythonNoob

関連する問題