Visit Our UNIX and Linux User Community


script syntax error: unexpected end of file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting script syntax error: unexpected end of file
# 1  
Old 08-04-2009
script syntax error: unexpected end of file

Need help. I cannot find the reason for this error:

Quote:
[name@database /name1/name2]$ sh a1.sh
+ file=/name1/name2/paramlist.txt
a1.sh: line 91: syntax error: unexpected end of file


here is the script
Quote:
#!/bin/bash
# ## set messages, variables
##################################################################################
DATE=`date +%Y%m%d`
TIME=`date +%H%M%S`
MESSAGE1="BACKUP: OK"
MESSAGE2="BACKUP: Fail"
MESSAGE3="DELETE: OK"
MESSAGE4="DELETE: Fail"
SUM=0
set -x
#################################################################################
# ## Read paramlist.txt and look for files to be trasferred
##################################################################################
file='/name1/name2/paramlist.txt'
while read line
do
#
key=`echo $line | awk -F\| '{ print $1 }'`
ip=`echo $line | awk -F\| '{ print $2 }'`
fuser=`echo $line | awk -F\| '{ print $3 }'`
ftppass=`echo $line | awk -F\| '{ print $4 }'`
lpath=`echo $line | awk -F\| '{ print $5 $6 $7 $8 $9 }'`
fpath=`echo $line | awk -F\| '{ print $10 $11 $12 $13 $14}'`
subject=`echo $line | awk -F\| '{ print $15 }'`
email=`echo $line | awk -F\| '{ print $16 }'`
#
echo "step1-$key"
#################################################################################
# ## Create log for each folder (/name1/name2/)
# ## xrf$key$(date '+%y%m%d'.%H%M%S).log - xrfba11090729.101010.log
# ## error code > 0 mean problem of find, no files in the folder
##################################################################################
LOGFILE="xrf$key$(date '+%y%m%d').log"
mFile="$lpath*txt"
find $mFile >> $LOGFILE
if [ $? -gt 0 ];
then
file_ctr=0
else
file_ctr=`egrep -cv '#|^$' /name1/name2/$LOGFILE`
fi
SUM=$(echo "$SUM + $file_ctr"|bc)
echo "total files:$SUM"
#
if [ $SUM -eq 0 ]; then
mailx -s "no FTP &subject" "$email"
else
echo "step2-ftp"
#################################################################################
# Upload to ftp; Create ftp log and trasfer log (/name1/name2/)
# ftp$(date '+%y%m%d'.%H%M%S).log - ftp1090729.101010.log
# DIRS # Name of source directory
# FILENAME # Name of file without directory
#################################################################################
vFTPName="ftp$key$(date '+%y%m%d').log"
cat $LOGFILE | while IFS= read line
do
DIRS=${line%/*}
FILENAME=${line#$DIRS/}
ftp -v -n $ip >>/name1/name2/$vFTPName <<EOF
quote user $fuser
quote pass $ftppass
lcd ${DIRS}
cd $fpath
bin
put ${FILENAME}
bye
EOF
done
fi
#
echo "step3-logs"
############################################## ###################################
# Check for (226 Transfer completed)
#################################################################################
ftp_ctr=`cat /name1/name2/$vFTPName | grep 226 | wc -l`
if [ "$ftp_ctr" = "$SUM" ];
then
echo "No Error"
mailx -s "$subject" "$email" < "$LOGFILE"
else
echo "Error has occured"
mailx -s "FTP failure $subject" "email@name.com" < "$LOGFILE"
exit
fi
#
SUM=0
done </impact/conv/paramlist.txt
#

Last edited by Lenora2009; 08-11-2009 at 08:19 PM..
# 2  
Old 08-04-2009
Sorry to be a pain, but please can you re-post the script using CODE tags (rather than QUOTE tags).
The likely area is:
ftp -v -n $ip >>/name1/name2/$vFTPName <<EOF
EOF

I think that there is a trailing space on the "ftp" line but CODE tags are more predictable.
# 3  
Old 08-04-2009
The EOF label must start at column 1.
Code:
cat $LOGFILE | while IFS= read line
do
   DIRS=${line%/*}
   FILENAME=${line#$DIRS/}
   ftp -v -n $ip >>/name1/name2/$vFTPName <<EOF
quote user $fuser
quote pass $ftppass
lcd ${DIRS}
cd $fpath
bin
put ${FILENAME}
bye
EOF
   done

Or
Code:
cat $LOGFILE | while IFS= read line
do
   DIRS=${line%/*}
   FILENAME=${line#$DIRS/}
   ftp -v -n $ip >>/name1/name2/$vFTPName <<-EOF
<tab>quote user $fuser
<tab>quote pass $ftppass
<tab>lcd ${DIRS}
<tab>cd $fpath
<tab>bin
<tab>put ${FILENAME}
<tab>bye
<tab>EOF
   done

You can rewrite theloop :
Code:
while IFS= read -u3 line
do
   . . .
done 3<$LOGFILE

Jean-Pierre.
# 4  
Old 08-04-2009
Thank you. Here is the code

Code:
 
#!/bin/bash
# ## set messages, variables 
##################################################################################
DATE=`date +%Y%m%d`
TIME=`date +%H%M%S` 
MESSAGE1="BACKUP: OK"
MESSAGE2="BACKUP: Fail"
MESSAGE3="DELETE: OK"
MESSAGE4="DELETE: Fail"
SUM=0
set -x
#################################################################################
# ## Read paramlist.txt and look for files to be trasferred 
##################################################################################
file='/name1/name2/paramlist.txt'
while read line
do
# 
key=`echo $line | awk -F\| '{ print $1 }'`
ip=`echo $line | awk -F\| '{ print $2 }'`
fuser=`echo $line | awk -F\| '{ print $3 }'`
ftppass=`echo $line | awk -F\| '{ print $4 }'`
lpath=`echo $line | awk -F\| '{ print $5 $6 $7 $8 $9 }'`
fpath=`echo $line | awk -F\| '{ print $10 $11 $12 $13 $14}'`
subject=`echo $line | awk -F\| '{ print $15 }'`
email=`echo $line | awk -F\| '{ print $16 }'` 
#
echo "step1-$key"
#################################################################################
# ## Create log for each folder (/name1/name2/) 
# ## xrf$key$(date '+%y%m%d'.%H%M%S).log - xrfba11090729.101010.log 
# ## error code > 0 mean problem of find, no files in the folder
##################################################################################
LOGFILE="xrf$key$(date '+%y%m%d').log"
mFile="$lpath*txt"
find $mFile >> $LOGFILE 
if [ $? -gt 0 ]; 
then 
file_ctr=0
else 
file_ctr=`egrep -cv '#|^$' /name1/name2/$LOGFILE` 
fi
SUM=$(echo "$SUM + $file_ctr"|bc)
echo "total files:$SUM"
#
if [ $SUM -eq 0 ]; then
mailx -s "no FTP &subject" "$email" 
else
echo "step2-ftp"
#################################################################################
# Upload to ftp; Create ftp log and trasfer log (/name1/name2/) 
# ftp$(date '+%y%m%d'.%H%M%S).log - ftp1090729.101010.log
# DIRS # Name of source directory
# FILENAME # Name of file without directory
#################################################################################
vFTPName="ftp$key$(date '+%y%m%d').log" 
cat $LOGFILE | while IFS= read line
do
DIRS=${line%/*}
FILENAME=${line#$DIRS/}
ftp -v -n $ip >>/name1/name2/$vFTPName <<EOF 
quote user $fuser
quote pass $ftppass
lcd ${DIRS}
cd $fpath
bin 
put ${FILENAME} 
bye
EOF
done 
fi
#
echo "step3-logs"
############################################## ###################################
# Check for (226 Transfer completed)
#################################################################################
ftp_ctr=`cat /name1/name2/$vFTPName | grep 226 | wc -l` 
if [ "$ftp_ctr" = "$SUM" ]; 
then
echo "No Error"
mailx -s "$subject" "$email" < "$LOGFILE"
else
echo "Error has occured"
mailx -s "FTP failure $subject" "email@name.com" < "$LOGFILE"
exit
fi 
#
SUM=0
done </impact/conv/paramlist.txt 
#


Last edited by Lenora2009; 08-11-2009 at 08:18 PM..
# 5  
Old 08-04-2009
Lose the trailing space character on the ftp line ! It's the space character after the EOF .
In fact you have quite a lot of lines with spurious trailing spaces.
To spot them I typed

Code:
cat scriptname|sed -e "s/ \$/X/g"

i.e. look for lines ending with a space character and change the space to an "X".

# 6  
Old 08-11-2009
sed -i "s/ \$//g" scriptname
I used the above command to remove the last blank space. Is it correct?
Though it does not remove the blank space if there is more than on space.
# 7  
Old 08-11-2009
No, just use "vi" or your normal editor to remove the trailing space.
The "sed" I used was just a quick way of seeing spaces - not an edit to the file.

Though the "sed" you suggest would remove the trailing space from the line ending EOF and fix the problem.

Code:
sed -i "s/ \$//g" old_scriptname > new_scriptname


Last edited by methyl; 08-11-2009 at 07:36 PM..

Previous Thread | Next Thread
Test Your Knowledge in Computers #964
Difficulty: Medium
HTML4 became a W3C Recommendation in 1994.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unexpected End of File Syntax Error

Hi, I am brand new to this so I apologize ahead of time for any formatting problems. I know there is a previous (closed) thread on here about this problem but I wasn't able to fix the error following the posts there so I thought I could create a new one. Here is the error I am getting: ... (3 Replies)
Discussion started by: SierraG
3 Replies

2. Shell Programming and Scripting

Syntax error `end of file' unexpected

I checked the forum and internet, tried different workaorunds but it didnt fixed the error. Please advise on the code. #!/bin/sh CWD=/home/test/Bench cd $CWD (grep "`date +%d-%b"`" File.txt) > /home/test/Bench/dateout if then echo “data” > /home/test/ Bench /test else echo "File... (16 Replies)
Discussion started by: rajjev_saini123
16 Replies

3. Shell Programming and Scripting

Cannot execute/finish script because of last line syntax error: unexpected end of file/token `done'

first of all I thought the argument DONE is necessary for all scripts that have or begin with do statements which I have on my script, However, I still don't completely understand why I am receiving an error I tried adding another done argument statement but didn't do any good. I appreciate... (3 Replies)
Discussion started by: wolf@=NK
3 Replies

4. Shell Programming and Scripting

syntax error unexpected end of file

I am new to unix, so thank u for ur patience I try to make it work (to duplicate two first columns in several files): #!/bin/bash for i in `seq 2 5` do awk `{ print $1,$1,$2,$2,$3,$4}` final_chr.${i} > input_${i} done and i get ./my_script3.sh: command substitution: line 5: syntax... (2 Replies)
Discussion started by: kush
2 Replies

5. Shell Programming and Scripting

syntax error: unexpected end of file

I will appreciate help is this matter. i am getting this error (./getwind.scr: line 41: syntax error: unexpected end of file) in the following script : ############################## #QSUB -eo -q sb -lT 1200 -s /bin/csh #Run on an HP-UX machine or norway to access ncks # lat and lon are in... (0 Replies)
Discussion started by: peeriich
0 Replies

6. Shell Programming and Scripting

syntax error: unexpected end of file

Hi, I am newbie to UNIX scripting. I am facing this error "syntax error: unexpected end of file" while executing the following script: ------ a=$1 if then sqlplus -s prospect_stg/prospect_stg@mdmpt <<END insert into bckup_marc_parameter_lookup select * from... (6 Replies)
Discussion started by: boopathyvasagam
6 Replies

7. Shell Programming and Scripting

syntax error: unexpected end of file

Hi, I have problem in constructing "IF" condition. The below code throws "tst.sh: line 10: syntax error: unexpected end of file" #!/bin/ksh test=9 echo $test if ] then echo "in" fi echo "end" exit 0 Actually, i want to check whether the variable $test is empty or null. ... (5 Replies)
Discussion started by: tinku
5 Replies

8. Shell Programming and Scripting

syntax error: unexpected end of file

I have a script that's failing ./zzmaster.sh: line 2: syntax error: unexpected end of file There are 4 scripts total involved. The first 'znocc0.sh' essentially curls a page then does some sed sequences... #!/bin/sh #GET SENTINAL INFO curl -b z0cookie.txt -L -k -e... (2 Replies)
Discussion started by: phpfreak
2 Replies

9. Shell Programming and Scripting

Help on shell script : syntax error at line 62: `end of file' unexpected

Hi All, I have written a korn script (code pasted below). It is giving the error while debugging "new.sh: syntax error at line 62: `end of file' unexpected". I have re-written the whole code in VI and explored all help related to this error on this Unix forum and tried it. Somehow, I could... (7 Replies)
Discussion started by: schandrakar1
7 Replies

10. Shell Programming and Scripting

syntax error: unexpected end of file

Hi, I need ur help is this matter, i have th ebelow script, and i keep getting this error: syntax error: unexpected end of file affectedRow=`cat dbOutput.log | grep "1 row affected"` echo "affectedRow : $affectedRow" if ; then echo "Look to the next OMCDB" ... (10 Replies)
Discussion started by: Alaeddin
10 Replies

Featured Tech Videos