Return to BSD News archive
Xref: sserve comp.unix.bsd:14672 comp.unix.misc:13605 comp.unix.programmer:19464 comp.unix.questions:54037 Newsgroups: comp.unix.bsd,comp.unix.misc,comp.unix.programmer,comp.unix.questions Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!news.Hawaii.Edu!ames!hookup!swrinde!howland.reston.ans.net!darwin.sura.net!news.Vanderbilt.Edu!drl From: drl@vuse.vanderbilt.edu (David R. Linn) Subject: Re: Q: How can I get yesterday's date? Message-ID: <1994Aug16.144600.17237@news.vanderbilt.edu> Sender: news@news.vanderbilt.edu Nntp-Posting-Host: jester.vuse.vanderbilt.edu Organization: Vanderbilt University School of Engineering, Nashville, TN, USA References: <Pine.3.89.9408160216.A15886-0100000@worf.uwsp.edu> <32q00b$9vn@daphne.ecmwf.co.uk> Date: Tue, 16 Aug 1994 14:46:00 GMT Lines: 116 In article <32q00b$9vn@daphne.ecmwf.co.uk>, Mike Connally <cd5@fulla.ecmwf.co.uk> wrote: >In article <Pine.3.89.9408160216.A15886-0100000@worf.uwsp.edu>, > pzuge@worf.uwsp.edu (Peter Zuge) writes: >|> I am using BSD/386 unix: >|> >|> I need to create a script that will run at a certain time everyday >|> "getting" ( via ftp ) a file with yesterday's date. > >No help to you, I'm afraid, but for designers of future >shells, this is yet another thing which should be addressed. >For example, this is how easy it is to do in the NOS/VE >command language, SCL: ... > Mike Connally, Systems Consultant | internet: Mike.Connally@cdl.cdc.com It's not that hard in a UNIX command langauge either: #!/bin/sh # yesterday: a program to find yesterday as a string or mail # file name # # this program will not work correctly on 2000-03-01 - 400yr # correction will not fire because the YR is already modulo 100 # TO_DAY=`date '+%d'` TO_MTH=`date '+%m'` TO_YR=`date '+%y'` YEST_DAY=`expr $TO_DAY - 1` YEST_MTH=`expr $TO_MTH - 0` YEST_YR=`expr $TO_YR - 0` if [ $YEST_DAY -eq 0 ] ; then case $TO_MTH in 0[124689]|11) YEST_DAY=31 ;; 0[57]|1[02]) YEST_DAY=30 ;; 03) # I hate February if [ `expr $TO_YR % 4` -eq 0 ] ; then if [ `expr $TO_YR % 100` -eq 0 ] ; then # this stuff will never be exercised - the YR is modulo 100 already if [ `expr $TO_YR % 400` -eq 0 ] ; then YEST_DAY=29 else YEST_DAY=28 fi else YEST_DAY=29 fi else YEST_DAY=28 fi ;; *) #this should not happen echo bad TO_DAY value exit 1 ;; esac YEST_MTH=`expr $YEST_MTH - 1` if [ $YEST_MTH -eq 0 ] ; then YEST_MTH=12 if [ $YEST_YR -eq 0 ] ; then YEST_YR=99 else YEST_YR=`expr $YEST_YR - 1` fi fi fi if [ $YEST_DAY -lt 10 ] ; then YEST_DAY="0$YEST_DAY" fi if [ $YEST_MTH -lt 10 ] ; then YEST_MTH="0$YEST_MTH" fi if [ $YEST_YR -lt 10 ] ; then YEST_YR="0$YEST_YR" fi if [ $# -gt 0 ] ; then case $1 in unread-list-mail) # this is terribly dependent on my current mail setup echo ${HOME}/.email/${YEST_YR}${YEST_MTH}01/zzUnread/${YEST_DAY} ;; *) echo $0: unknown argument - $1 exit 2 ;; esac else echo ${YEST_YR}${YEST_MTH}${YEST_DAY} fi exit 0 -- David R. Linn, System Manager/Postmaster| INET: drl@vuse.vanderbilt.edu Disclaimer: I speak only for myself | Phone: [+1] 615-343-6164 dee are ell at vee you ess ee dot van der bilt dot ee dee you