ksh88中的日期差异

时间:2018-01-30 05:16:26

标签: unix ksh

我正在编写一个脚本,我需要计算两个日期之间的日期差异,因为我正在使用此命令

Date1="2018-01-01 12:00:00" 
Date2="2018-02-01 12:00:00"
TimeDiff=$(expr $(date -u -d "$Date2" +"%s") - $(date -u -d "$Date1" +"%s"))

这在其他shell中运行正常,但在KSH 88中无效。

1 个答案:

答案 0 :(得分:0)

您的脚本与ksh88完全正常。

如果你说明你正在使用什么操作系统会有所帮助,并提供更多关于“不工作”的提示,但无论如何,我假设你在传统的Unix上测试这个事实{ {1}}在Linux上极为罕见。

这个问题很可能与完全理解在Unix上一直存在的ksh88的{​​{1}}以及ksh88甚至发明的expr符号无关。与您使用非POSIX扩展的命令$( ... )

如果您的计算机上安装了ksh88 date,并且可通过其独特名称GNU访问,则可以使用:

date

如果同一个脚本在gdate执行时有效,但在相同机器上时 ksh88 失败,则问题在于{{1 }}。例如,在TimeDiff=$(expr $(gdate -u -d "$Date2" +"%s") - $(gdate -u -d "$Date1" +"%s")) 下,您的bash首先有一个假设PATH,而在bash下,您的PATH以POSIX /usr/gnu/bin开头。