Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash:两个日期均为%b";和日期%";(当然还有)日期“B";给出月份的全名?_Linux_Bash_Shell_Ubuntu 12.04 - Fatal编程技术网

Linux Bash:两个日期均为%b";和日期%";(当然还有)日期“B";给出月份的全名?

Linux Bash:两个日期均为%b";和日期%";(当然还有)日期“B";给出月份的全名?,linux,bash,shell,ubuntu-12.04,Linux,Bash,Shell,Ubuntu 12.04,我正在Ubuntu服务器12.04中编写一个shell脚本,用来比较日志文件中的一些数据。 在日志文件中,日期的格式为: [Mon Apr 08 15:02:54 2013] 如您所见,它表示Apr 根据,bash中为此使用的选项是b或h 然而,我(在我的比较脚本中,或直接在shell中)使用b、h或b并不重要。它们都返回了月份的全名 date +"%b" #Returns april (should have returned Apr) date +"%h" #Returns april (

我正在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


)

我已经对它进行了测试,问题似乎在于挪威的本地化:

$ LC_ALL=C date +%b
Apr

$ LC_ALL=nn_NO.UTF-8 date +%b
april
因此,当您试图解析日志文件时,应将
LC_ALL
环境变量设置为
C
,即

LC_ALL=C command


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

redHat install For US/UK提供日期+%b“->4月。您的收获很好:针对挪威语重新安装。也许设置LC*envvars可以解决这个问题?(在此处搜索,您将找到示例和讨论)。祝你好运。@Sheller你说得对。非常感谢。
export LC_ALL=C
# your script code here
export -n LC_ALL