The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #1 (permalink)  
Old 03-17-2009
jbsimon000 jbsimon000 is offline
Registered User
  
 

Join Date: Mar 2009
Posts: 12
Unhappy Reading lines from a file, using bash, "at" command

Hi.
I have the script shown below. If I execute it form the command line it seems to work properly, but when I fun it using the unix "at" command
"at -m now < ./kill-at-job.sh"
It appears to hang. Below is the script, the input file, and the execution as reported in the e-mail from the "at" processor. This is running on sunOS,
version 5.8.

Thanks !
Joe Simon

The script :

#!/bin/bash
#

set -x

# Get Info from :
# ~/builds/scripts/at-job.log
#
AT_LOG_FILE_NAME=~/builds/scripts/at-job.log

LINE_COUNT=0
while read LINE
do
# Need to skip first line, at job name is on 2nd line
if [[ $LINE_COUNT -eq 1 ]] ; then
set -- $LINE
AT_JOB="$2"
echo "AT Job ID = $AT_JOB"
break
fi
LINE_COUNT=$(($LINE_COUNT+1))
done < $AT_LOG_FILE_NAME

echo "Loop Complete"

The input file looks like this:

commands will be executed using /bin/bash
job 1237304740.a at Tue Mar 17 11:45:40 2009

The log file e-mailed to me looks like this:

Your "at" job on xxxx
"/var/spool/cron/atjobs/1237303896.a"

produced the following output:

+ AT_LOG_FILE_NAME=/xxx/builds/scripts/at-job.log
+ LINE_COUNT=0
+ read LINE
+ [[ 0 -eq 1 ]]
+ LINE_COUNT=1
+ read LINE
+ [[ 1 -eq 1 ]]
+ set -- job 1237304740.a at Tue Mar 17 11:45:40 2009
+ AT_JOB=1237304740.a
+ echo 'AT Job ID = 1237304740.a'
AT Job ID = 1237304740.a
+ break


If I remove the break (this is what I originally had), the execution looks like this:

+ AT_LOG_FILE_NAME=/export/home4/a10/simonj/builds/scripts/at-job.log
+ LINE_COUNT=0
+ read LINE
+ [[ 0 -eq 1 ]]
+ LINE_COUNT=1
+ read LINE
+ [[ 1 -eq 1 ]]
+ set -- job 1237304740.a at Tue Mar 17 11:45:40 2009
+ AT_JOB=1237304740.a
+ echo 'AT Job ID = 1237304740.a'
AT Job ID = 1237304740.a
+ LINE_COUNT=2
+ read LINE