printf
を取得して、%e記述子を持つ変数をbashスクリプトに出力できません。それはちょうど私は、これはおそらく非常に簡単な質問ですけど、私はbashのにかなり新たなんだと常にecho
を使用スクリプト内のbash:printfコマンドで解読不可能なエラーが "無効な数値"を返す
#!/bin/bash
a=14.9
printf %e 14.9;
を言うでしょう。プラス私はどこでも答えを見つけることができませんでした。実行時に
は、私は私の問題は、ロケール変数LC_NUMERICあるので
$ ./test.text
./test.text: line 3: printf: 14.9: invalid number
0,000000
を得る:私は小数点の記号としてコンマを使用するように、それが設定されています。確かに、それはヨーロッパのローカライズに設定されています:
$ locale | grep NUM
LC_NUMERIC="it_IT.UTF-8"
私はEN_US.UTF-8に設定すると思ったが、明らかに私はしませんでした。今、問題は、私のロケール変数を設定する方法を見つけるために切り替わります。単に使用
$ LC_NUMERIC="en_US.UTF-8"
は動作しません。
どうしますか?ここでうまく動作します... –
このコードはここでうまく動作しますが(結果1.490000e + 01)、このページhttp://linuxconfig.org/bash-printf-syntax-basics-with-examplesは、%eが/引用符で囲む必要があります。 "%e"を表示します。 – enhzflep
@enhzflep:ありがとうございましたが、問題はそれではありません。引数自体に必要がない限り、printfの引数を二重引用符で囲む必要はありません。とにかくそれなしで動作します。 変数を $ LC_NUMERIC = "en_US.UTF-8" と設定できますが、これは非永続的です。 どうすれば永久にすることができますか?私はCygwinを実行する。 –