用户输入日期变量在SOLARIS 10中为-1到-5天

时间:2016-05-24 12:36:20

标签: bash date variables solaris solaris-10

我目前正在尝试整理一个脚本,该脚本可以将用户输入的日期作为变量生成前5天,同时保持格式为YYYYMMDD。

我使用的版本是GNU bash,版本3.2.52(1)-release(i386-pc-solaris2.10)但是似乎管理员已经阻止了GNU Util的使用,所以'gdate'命令不能使用。

我曾尝试使用无效的日期-d。此外,我试图使用Perl,但似乎无法掌握如何将其操纵到最佳状态。

我目前拥有的脚本可以在下面看到,但没有返回最终日期。

#!/bin/bash
read -p "Enter the date (format = YYYYMMDD) : " Udate
echo $Udate
U2date=`TZ=GMT+24${Udate}'+%Y%m%d'`
echo $U2date

我的假设是,如果此代码有效,我只需将+24增加到+48,依此类推更多所需日期。

道歉,如果这是一个需要解决的简单问题,我对编写脚本非常陌生,而且我正在学习。

1 个答案:

答案 0 :(得分:0)

echo“输入日期(YYYYMMDD):” 阅读Udate 时间戳= perl -MTime::Local=timelocal -e '@t = unpack ("A4A2A2", $ARGV[0]); $t[1]--; print timelocal(1,1,1,reverse @t);' $Udate U2date = perl -MPOSIX=strftime -e 'print strftime("%Y%m%d", localtime($ARGV[0] -86400));' $timestamp U3date = perl -MPOSIX=strftime -e 'print strftime("%Y%m%d", localtime($ARGV[0] -172800));' $timestamp U4date = perl -MPOSIX=strftime -e 'print strftime("%Y%m%d", localtime($ARGV[0] -259200));' $timestamp U5date = perl -MPOSIX=strftime -e 'print strftime("%Y%m%d", localtime($ARGV[0] -345600));' $timestamp

如果有人遇到类似问题,以备将来参考。