Date: Mon, 12 Sep 2005 20:37:22 +0200 From: Frank Mueller - emendis GmbH <Frank.Mueller@emendis.de> To: Paul Schmehl <pauls@utdallas.edu> Cc: freebsd-questions@freebsd.org Subject: Re: Shell scripting question Message-ID: <4325CAE2.3020906@emendis.de> In-Reply-To: <01A14A33D6971135F96609A2@utd59514.utdallas.edu> References: <01A14A33D6971135F96609A2@utd59514.utdallas.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
To get the date in the right format you could simply use date +%H Greetz, Ice Paul Schmehl schrieb: > I've written a script to check apache to make sure it's running *and* > logging. One of the variables I create is named DATEHOUR, and it's > created by parsing the output of date in such a way that all I get is > the hour (using awk and cut.) I'm comparing DATEHOUR to LOGHOUR, which > represents the the most recent hour that the log was written to > > I've run in to a small problem I'm not sure how to solve. When the hour > is less than 10, the script generates an arithmetic expression error. > > Here's part of the script so you can visualize what I'm trying to do: > > PROG=/usr/local/sbin/apachectl > LOG=/var/log/httpd-access.log > PID=`/bin/ps -auxw | grep http | grep root | grep -v grep | awk '{print > $2}'` > DATE=`date | awk '{print $4}' | cut -d':' -f1,2` > LOGDATE=`ls -lsa ${LOG} | awk '{print $9}'` > DATEHOUR=`echo ${DATE} | cut -d':' -f1` > LOGHOUR=`echo ${LOGDATE} | cut -d':' -f1` > DATEMIN=`echo ${DATE} | cut -d':' -f2` > LOGMIN=`echo ${LOGDATE} | cut -d':' -f2` > LOGGING=1 > > if [ $((DATEMIN)) -gt $((LOGMIN+15)) ]; then > LOGGING=0 > elif [ $((DATEHOUR)) -ne $((LOGHOUR)) ] && [ $((DATEMIN+60)) -gt > $((LOGMIN+15)) ]; then > LOGGING=0 > fi > > When DATEHOUR is less than 10 (01-09), the script generate an arithmetic > expression, variable substition error. I'm pretty certain it's because > of the leading zero, so I'm trying to figure out how to strip that out. > I thought that parameter expansion would do it, but I get some odd (to > me) results. > > Assume DATE is 09. > > echo ${DATE:0,0} > 09 > echo ${DATE:0,1} > 9 > echo ${DATE:1,1} > 9 > > I would have thought that 0,0 would return only the first character and > 1,1 would return only the second, but that is obviously not the case. > > How can I strip the leading character from the string so that I can test > to see if it's zero? > > Paul Schmehl (pauls@utdallas.edu) > Adjunct Information Security Officer > University of Texas at Dallas > AVIEN Founding Member > http://www.utdallas.edu/ir/security/ > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to > "freebsd-questions-unsubscribe@freebsd.org" -- Frank Mueller eMail: Frank.Mueller@emendis.de Mobil: +49.177.6858655 Fax: +49.951.3039342 emendis GmbH Hofmannstr. 89, 91052 Erlangen, Germany Fon: +49.9131.817361 Fax: +49.9131.817386 Geschaeftsfuehrer: Gunter Kroeber, Volker Wiesinger Sitz Erlangen, Amtsgericht Fuerth HRB 10116
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4325CAE2.3020906>