20

printfbashスクリプトで%e記述子を使用して変数を出力できません。それはただ言うだろう

#!/bin/bash
a=14.9
printf %e 14.9;

これは非常に簡単な質問である可能性が高いことは知っていますが、私はbashにかなり慣れておらず、常に使用していechoます。それに、どこにも答えが見つかりませんでした。


実行すると私は得る

$ ./test.text
./test.text: line 3: printf: 14.9: invalid number
0,000000

したがって、私の問題はロケール変数LC_NUMERICです。これは、小数点としてコンマを使用するように設定されています。確かに、それはヨーロッパのローカリゼーションに設定されています:

$ locale | grep NUM
LC_NUMERIC="it_IT.UTF-8"

en_US.UTF-8に設定したと思いましたが、明らかに設定しませんでした。ここで、問題は、ロケール変数の設定方法を見つけるために切り替わります。単に使用する

$ LC_NUMERIC="en_US.UTF-8"

動作しません。

4

3 に答える 3

24

これ:

LC_NUMERIC="en_US.UTF-8" printf %e 14.9

$LC_NUMERICその 1 つのコマンドの間だけ設定します。

これ:

export LC_NUMERIC="en_US.UTF-8"

$LC_NUMERIC現在のシェルプロセスの間だけ設定します。

追加すると

export LC_NUMERIC="en_US.UTF-8"

$HOME/.bashrcまたは$HOME/.bash_profileに設定すると、起動$LC_NUMERICするすべての bash シェルに設定されます。

$LC_NUMERIC自分.bashrcのシェル起動ファイルまたは他のシェル起動ファイルに設定されている既存のコードを探します。

于 2012-10-11T18:50:19.000 に答える
4

ロケールに問題がある可能性があり、ピリオドが予期されていませんでした。試す:

LC_NUMERIC="en_US.UTF-8" printf %e 14.9
于 2012-10-11T18:24:10.360 に答える