我正在编写一个脚本,我需要计算两个日期之间的日期差异,因为我正在使用此命令
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中无效。
答案 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
开头。