脚本中的printf命令返回“无效数字”

时间:2012-10-11 18:14:52

标签: bash printf

我无法让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"

无效。

3 个答案:

答案 0 :(得分:12)

此:

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

仅在该一个命令的持续时间内设置$LC_NUMERIC

此:

export LC_NUMERIC="en_US.UTF-8"

仅在当前shell进程的持续时间内设置$LC_NUMERIC

如果你添加

export LC_NUMERIC="en_US.UTF-8"

$HOME/.bashrc$HOME/.bash_profile,它会为您启动的所有bash shell设置$LC_NUMERIC

查找在$LC_NUMERIC或其他shell启动文件中设置.bashrc的现有代码。

答案 1 :(得分:4)

您可能遇到语言环境问题,并且没有预料到一段时间。尝试:

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

答案 2 :(得分:0)

我碰到了这个错误,找到了此页面。就我而言,这是100%的飞行员错误。

sceneView.pointOfView = cameraNode

应该是

month=2
printf "%02d" month

或更简单地

printf "%02d" "${month}"