使用相同的 种类 具有相同输入的命令在不同的机器上产生不同的结果。我该如何解决这个问题?

有帮助吗?

解决方案

手册页 在 OS X 上说:

****** 警告 ****** 环境指定的区域设置会影响排序顺序。设置LC_ALL = C获取使用本机字节值的传统排序顺序。

这或许可以解释一些事情。

如果您的某些系统没有区域设置支持,它们将默认为该区域设置 (C),因此您不必在这些系统上进行设置。如果您有一些支持区域设置并想要相同的行为,请设置 LC_ALL=C 在这些系统上。这将是让我所知道的尽可能多的系统都以同样的方式进行的方式。

如果您没有任何无区域设置的系统,只需确保它们共享区域设置可能就足够了。

有关更多规范信息,请参阅 The Single UNIX ® 规范,版本 2 的描述 语言环境, 环境变量, 设置语言环境() 以及描述 排序(1) 公用事业。

其他提示

这可能是区域设置差异的结果:

$ echo 'CO2_
CO_' | env LC_ALL=C sort
CO2_
CO_


$ echo 'CO2_
CO_' | env LC_ALL=en_US sort
CO_
CO2_

将 LC_ALL 环境变量设置为相同的值应该可以解决该问题。

这可能是由于不同的设置 区域设置环境变量. sort 将使用这些设置来确定如何比较字符串。在调用之前按照您想要的方式设置这些环境变量 sort, ,您应该能够强制它以一种特定的方式运行。

比您想了解的更多 sort, , 阅读 规格 sort 在里面 单一 Unix 规范 v3. 。它指出

比较[...]应使用当前语言环境的整理顺序来执行。

哇哦,怎么样 sort 排序取决于脚本运行环境的区域设置(语言)设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top