Skip site navigation (1)Skip section navigation (2)
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>