ksh88 中的日期差异
Date Difference in ksh88
我正在编写一个脚本,因为我需要计算我正在使用此命令的两个日期之间的日期差异
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 中不工作。
您的脚本在 ksh88
上运行良好。
如果您说明 OS 您正在使用什么 并提供有关 "is not working" 的更多提示,这将有所帮助,但无论如何,我假设您正在测试在传统的 Unix 上,鉴于 ksh88
在 Linux.
上极为罕见
这个问题很可能与 ksh88
无关,后者完全理解一直存在于 Unix 上的 expr
,以及 ksh88
甚至发明的 $( ... )
符号,但是使用非 POSIX 扩展的命令 date
。
如果 GNU
date
安装在您的计算机上并且可以通过其独特的名称 gdate
访问,您可以简单地使用:
TimeDiff=$(expr $(gdate -u -d "$Date2" +"%s") - $(gdate -u -d "$Date1" +"%s"))
如果相同的脚本在 bash
执行时有效,但当您留在 same 机器上时因 ksh88 而失败,问题出在您的 PATH
上。例如,在 bash
下,您的 PATH
有一个假设的 /usr/gnu/bin
位于第一位,而在 ksh88
下,您的 PATH
以 POSIX 开头/usr/xpg4/bin
.
我正在编写一个脚本,因为我需要计算我正在使用此命令的两个日期之间的日期差异
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 中不工作。
您的脚本在 ksh88
上运行良好。
如果您说明 OS 您正在使用什么 并提供有关 "is not working" 的更多提示,这将有所帮助,但无论如何,我假设您正在测试在传统的 Unix 上,鉴于 ksh88
在 Linux.
这个问题很可能与 ksh88
无关,后者完全理解一直存在于 Unix 上的 expr
,以及 ksh88
甚至发明的 $( ... )
符号,但是使用非 POSIX 扩展的命令 date
。
如果 GNU
date
安装在您的计算机上并且可以通过其独特的名称 gdate
访问,您可以简单地使用:
TimeDiff=$(expr $(gdate -u -d "$Date2" +"%s") - $(gdate -u -d "$Date1" +"%s"))
如果相同的脚本在 bash
执行时有效,但当您留在 same 机器上时因 ksh88 而失败,问题出在您的 PATH
上。例如,在 bash
下,您的 PATH
有一个假设的 /usr/gnu/bin
位于第一位,而在 ksh88
下,您的 PATH
以 POSIX 开头/usr/xpg4/bin
.