日期格式显示shell脚本中的异常

时间:2013-06-08 02:51:23

标签: linux shell date crontab

shell脚本:

echo '/bin/date -d "1 days ago" +"%x"'

当我直接从终端运行shell脚本时,输出为:

06/07/2013\n

但是当我在crontab中运行脚本时,输出为:

06/07/13\n

我希望输出与上面的输出相同。如果您知道原因,可以与我分享。

1 个答案:

答案 0 :(得分:4)

%x标志表示“区域设置的日期表示”。与您的用户相比,chrony具有不同的语言环境设置,以验证此尝试在cron用户下执行locale命令(即将* * * * * root locale > /root/cron-locale添加到/ etc / crontab);你会看到它是:

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

在为您的用户帐户运行locale时,可能会返回以下内容:

LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

要获得一致的日期表示,请使用:%Y,这意味着4个字符年