如何使 BSD printf 命令忽略语言环境

How to make BSD printf command ignore locale

我们的项目 (https://github.com/prsolucoes/gonotin - run.sh) 中有一个 bash 脚本,需要使用 printf 作为浮点执行时间。

问题出在语言环境 = pt_br 的 osx 上的 printf,因为它使用“,”而不是“.”并且 printf 命令不知道 en_us 个数字,例如“123.45”,只知道“123,45”。

我的问题是关于在 printf 上忽略区域设置或在 printf 命令上传递自定义区域设置。

谁能帮帮我?

谢谢。

预先为命令分配变量将 运行 它与该变量一起作为临时环境变量。所以在你的情况下,像

LC_NUMERIC=C printf "> Execution time: %.6f seconds\n\n" $dur

应该可以解决问题。

More info about LC_* environment variables.