Unix Solaris CSH脚本中的上个月日期
作为预先要求,我需要在Unix(solaris)csh中获取上个月的日期 上面的命令将获取上个月的日期,并在Linux服务器上正常工作。但我们的服务器是Solaris,上面提到的命令不起作用Unix Solaris CSH脚本中的上个月日期,unix,solaris,csh,Unix,Solaris,Csh,作为预先要求,我需要在Unix(solaris)csh中获取上个月的日期 上面的命令将获取上个月的日期,并在Linux服务器上正常工作。但我们的服务器是Solaris,上面提到的命令不起作用 请任何人建议我如何获取上个月的日期,您应该能够为solaris平台编译,这将为您提供正确的日期实用程序。但是,正如名称所示,coreutils覆盖了核心实用程序,您可能希望将其安装到自定义路径中,并通过特殊路径选择正确的日期命令,例如“/opt/coreutils/bin/date” 另一种方法是使用符号日
请任何人建议我如何获取上个月的日期,您应该能够为solaris平台编译,这将为您提供正确的日期实用程序。但是,正如名称所示,coreutils覆盖了核心实用程序,您可能希望将其安装到自定义路径中,并通过特殊路径选择正确的日期命令,例如“/opt/coreutils/bin/date” 另一种方法是使用符号日期输出分割计算上月
eval `date +"set YEAR=%Y; set MONTH=%m ;set DAY=%d"`
现在您可以在“$YEAR”、“$MONTH”和“$DAY”上操作。比如说
let 'MONTH--'
if [ "$MONTH" -eq 0 ]; then MONTH=12; let 'YEAR--'; fi
set Lmit_Date=`date --date "$MONTH$DAY0000$YEAR" +"%Y%m%d"`
有点。(我习惯于bash,所以我不知道这里是否有let
。但是还有一些其他的方法来shell计算。可能还有另一个csh关键字)
您还需要注意使用$DAY参数每月的天数。您应该能够为solaris平台编译,这将为您提供正确的日期实用程序。但是,正如名称所示,coreutils覆盖了核心实用程序,您可能希望将其安装到自定义路径中,并通过特殊路径选择正确的日期命令,例如“/opt/coreutils/bin/date” 另一种方法是使用符号日期输出分割计算上月
eval `date +"set YEAR=%Y; set MONTH=%m ;set DAY=%d"`
现在您可以在“$YEAR”、“$MONTH”和“$DAY”上操作。比如说
let 'MONTH--'
if [ "$MONTH" -eq 0 ]; then MONTH=12; let 'YEAR--'; fi
set Lmit_Date=`date --date "$MONTH$DAY0000$YEAR" +"%Y%m%d"`
有点。(我习惯于bash,所以我不知道这里是否有let
。但是还有一些其他的方法来shell计算。可能还有另一个csh关键字)
您还需要注意$DAY参数的每月天数。问题是由于您使用GNU日期扩展<代码>--日期是非标准的 此外,由于月份长度是可变的,GNU date显示的日期可能是意外的,至少可以说 例如,今天是3月31日,但根据GNU日期,“上个月”日期是3月2日:
$ date +%Y%m%d
20160331
$ date --date='1 month ago' +%Y%m%d
20160302
如果您仍然希望在Solaris上使用GNU date或找到一些解决方法,请查看以下回复:
而问题是由于您使用的是GNU日期扩展<代码>--日期是非标准的 此外,由于月份长度是可变的,GNU date显示的日期可能是意外的,至少可以说 例如,今天是3月31日,但根据GNU日期,“上个月”日期是3月2日:
$ date +%Y%m%d
20160331
$ date --date='1 month ago' +%Y%m%d
20160302
如果您仍然希望在Solaris上使用GNU date或找到一些解决方法,请查看以下回复:
和请您建议如何在solaris服务器中获取上月,您正在运行哪个solaris版本?请您建议如何在solaris服务器中获取上月,您正在运行哪个solaris版本?例如,今天是3月31日,但根据GNU日期Ooof,上月日期是3月2日。这是一种不可原谅的含糊不清的行为。我希望提问者正在重新考虑使用GNU日期来实现这一点。注意上面的手写:例如今天是3月31日,但根据GNU日期Ooof,上个月的日期是3月2日。这是一种不可原谅的含糊不清的行为。我希望提问者正在重新考虑使用GNU日期来实现这一点。注意上面的手势: