2016-05-24 1 views
0

J'essaie actuellement de créer un script qui peut prendre une date entrée par l'utilisateur et générer les 5 jours précédents en tant que variables tout en conservant le format AAAAMMJJ. La version que j'utilise est GNU bash, version 3.2.52 (1) -release (i386-pc-solaris2.10) mais il semble que l'administrateur ait bloqué l'utilisation de GNU Util pour que les commandes 'gdate' puissent ' t être utilisé.Date de saisie de l'utilisateur Variable -1 à -5 jours dans SOLARIS 10

J'ai essayé d'utiliser date -d qui n'est pas valide. En outre, j'ai essayé d'utiliser Perl mais je n'arrivais pas à comprendre comment le manipuler au mieux.

Le script que j'ai actuellement peut être vu ci-dessous mais ne retourne pas la date finale.

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

Ma présomption est que si ce code a fonctionné, je voudrais simplement augmenter le 24-48 et ainsi de suite pour les dates plus nécessaires.

Excuses s'il s'agit d'un problème simple à résoudre, je suis assez nouveau pour les scripts et j'apprends en déplacement.

+0

'date -d' n'est pas supporté ou vous ne savez pas comment l'utiliser? Que signifie invalide? – Inian

Répondre

0

echo "Entrez la date (AAAAMMJJ):" lire udate timestamp = 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

Pour référence ultérieure au cas où quelqu'un a un similaire problème.