【发布时间】:2022-03-22 06:25:07
【问题描述】:
我无法让printf 在 bash 脚本中打印带有 %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"
不会工作。
【问题讨论】:
-
你得到了什么?在这里工作正常...
-
虽然代码在这里运行良好(结果 1.490000e+01),但此页面 linuxconfig.org/bash-printf-syntax-basics-with-examples 表明 %e 可以/应该放在引号内。即 printf "%e" 14.9;
-
@enhzflep:谢谢,但问题不在于。您不需要将 printf 的参数放在双引号中,除非参数本身不需要它。此外,无论如何它都可以在没有它们的情况下工作。我可以使用 $export LC_NUMERIC="en_US.UTF-8" 设置变量,但这是非永久性的。我怎样才能使它永久化?我运行 Cygwin。
-
尝试设置
LC_NUMERIC="C"。 -
@Axel:但他想要
en_US.UTF-8。