gpt4 book ai didi

bash - 脚本中的 printf 命令返回 "invalid number"

转载 作者:行者123 更新时间:2023-11-29 08:47:06 28 4
gpt4 key购买 nike

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

不会工作。

最佳答案

这个:

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

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

更新:

如果未设置$LC_NUMERIC 环境变量,则可以从$LANG$ 设置LC_NUMERIC 区域设置LC_ALL。检查您的环境变量设置以及 locale 命令的输出。 $LC_ALL 覆盖 $LC_NUMERIC$LC_NUMERIC 覆盖 $LANGman locale 和/或 man 7 locale 了解详细信息。

关于bash - 脚本中的 printf 命令返回 "invalid number",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845997/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com