4

我正在 Ubuntu 服务器 12.04 中编写一个 shell 脚本,它应该比较日志文件中的一些数据。在日志文件中,日期以以下格式给出:

[Mon Apr 08 15:02:54 2013]

如您所见,它声明Apr

根据手册页,为此在 bash 中使用的选项是bh

但是,无论我(在我的比较脚本中,还是直接在 shell 中)使用bhB都没有关系。它们都返回月份的全名。

date +"%b" #Returns april (should have returned Apr)
date +"%h" #Returns april (should have returned Apr)
date +"%B" #Returns april (correct? Should it not be capital A?)

这当然使得根据日期进行比较变得非常困难......

有没有其他人经历过这个,并找到了解决方案?

(我不确定这是否相关,但我在安装服务器时选择了挪威语作为安装语言。)

感谢@toro2k 在这里的回答,我最终得到了一个可行的解决方案:

DATE=`LC_ALL=C date +%b" "%d" "%H`

(这不起作用:

LC_ALL=C  

日期=date +%b" "%d" "%H

)

4

1 回答 1

5

我已经测试过了,问题似乎是挪威本地化:

$ LC_ALL=C date +%b
Apr

$ LC_ALL=nn_NO.UTF-8 date +%b
april

因此,当您尝试解析日志文件时,您应该将LC_ALL环境变量设置为C,即

LC_ALL=C command

或者

export LC_ALL=C
# your script code here
export -n LC_ALL

有关区域设置的更多信息,请参阅Ubuntu wiki上的区域设置页面。

于 2013-04-08T15:33:31.953 回答