On Tue, Nov 06, 2007 at 04:30:20PM -0500, [EMAIL PROTECTED] wrote: > #!/bin/sh > > blockflag=/ihome/tables/modemhog.txt > pageflag=/ihome/tables/modemhog.page > > [ -s $blockflag ] && exit > > for i in /home/* > do > [ -d $i ] || continue > cd $i > > [ -f session_log ] || continue > > tail session_log | > gawk -v Username=`basename $i` -v TodayDate=`date '+%b %e'` \ > -v CurrentYear=`date '+%Y'` -v BlockFlag=$blockflag \ > '$0 ~ /[Uu]ser/ && $0 !~ Username && $0 ~ TodayDate \ > && $0 ~ CurrentYear \ > {print Username, $0 >> BlockFlag}'
Two comments: 1. I think you need to say "cd .." here to return to the top-level directory so that your next call to "cd" has a chance to succeed. 2. You should enclose the -v arguments to gawk in quotes. Like this: gawk -v "Username=`basename $i`" -v "TodayDate=`date '+%b %e'`" ... Otherwise, any spaces in those values will confuse gawk. For example: bash-3.1$ gawk -v "TodayDate=`date '+%b %e'`" 'BEGIN {print TodayDate}' Nov 7 bash-3.1$ gawk -v TodayDate=`date '+%b %e'` 'BEGIN {print TodayDate}' gawk: cmd. line:1: fatal: cannot open file `BEGIN {print TodayDate}' for reading (No such file or directory) Regards, Andy