Syntax error: Bad for loop variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Syntax error: Bad for loop variable
# 15  
Old 12-27-2011
Current Code

Code:
#!/bin/bash
#Filename: UploadFileToFtp.sh
################################COMMENTS################################
#hacer los siguiente hasta que se acaben los archivos:
# leer el path de un archivo
# subirlo al ftp
# mover el archivo que se subio a submitted folder
# esperar 5 minutos (300 segundos)
################################COLORS##################################
#Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed 

#Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white

#Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#########################################################################

#set -x verbose #echo on everything
set -o errexit

clear #clear the screen

USERNAME="z"
PASSWORD="z"
SERVER="z"
WAIT_TIME=1
FILE_PATH="/home/user/Desktop/MMM" # local directory to pickup *.dat file
REMOTE_PATH="/Drop_off/Region_3_prod/EDI" # remote server directory to upload backup
FILES_PROCESSED=0

echo -e "\e[01;34mStarting process...\e[0m"
echo "Using the following values:"
echo "Username: $USERNAME"
echo "Password: $PASSWORD"
echo "Server: $SERVER"
echo "Wait time: $WAIT_TIME seconds"
echo "Remote Path: $REMOTE_PATH"

#Process files
for file in $FILE_PATH/*.dat
do
	# take action on each file. [file] stores current file name
	./UFTFTP_SecondScript.sh $file $USERNAME $PASSWORD $SERVER $REMOTE_PATH
	echo "Seconds until next upload: $WAIT_TIME"
	x=0
	while [ $x -lt $WAIT_TIME ]
	do
		echo -ne "Sleeping for ...`expr $WAIT_TIME - $x`\r"
		sleep 1
		x=`expr $x + 1` # " ` " use backticks not " ' " apostrophe
	done
FILES_PROCESSED=`expr $FILES_PROCESSED + 1`
echo "Procesing file number: $FILES_PROCESSED"
done
echo -e "\e[01;33
mTotal number of files processed: $FILES_PROCESSED\e[0m"

Code:
#!/bin/bash
#filename: UFTFTP_SecondScript.sh
################################COLORS##################################
#Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed 
#
#Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
#
#Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#########################################################################

#set -x verbose #echo on

#file: 1
#USERNAME: 2
#PASSWORD: 3
#SERVER: 4
#REMOTE_PATH: 5

#login to remote server
echo -e "\e[01;31mConnecting to server...\e[0m"
echo -e "\e[01;34mProcessing file $1...\e[0m"
ftp -n -i $4 <<END_INPUT
user $2 $3
cd $5
put $1 
quit
END_INPUT
echo -e "\e[01;32mFinihed procesing file $1...\e[0m"

Execution error:


Starting process...
Using the following values:
Username: z
Password: z
Server: z
Wait time: 1 seconds
Remote Path: /Drop_off/Region_3_prod/EDI
Connecting to server...
Processing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837IEDIMMM20111117193200001v1-5010-50.dat...
Filename invalid
Finihed procesing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837IEDIMMM20111117193200001v1-5010-50.dat...
Seconds until next upload: 1
Procesing file number: 1
Connecting to server...
Processing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837IEDIPMC20111117194600001v1-5010-50.dat...
Filename invalid
Finihed procesing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837IEDIPMC20111117194600001v1-5010-50.dat...
Seconds until next upload: 1
Procesing file number: 2
Connecting to server...
Processing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837PEDIMMM20111117195600001v1-5010.dat...
Filename invalid
Finihed procesing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837PEDIMMM20111117195600001v1-5010.dat...
Seconds until next upload: 1
Procesing file number: 3
Connecting to server...
Processing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837PEDIMMM20111117200200003v1-5010-50.dat...
Filename invalid
Finihed procesing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837PEDIMMM20111117200200003v1-5010-50.dat...
Seconds until next upload: 1
Procesing file number: 4
Connecting to server...
Processing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837PEDIPMC20111117194900001v1-5010-50.dat...
Filename invalid
Finihed procesing file /home/user/Desktop/MMM/EDEInmediataInboundClaims837PEDIPMC20111117194900001v1-5010-50.dat...
Seconds until next upload: 1
Procesing file number: 5
Total number of files processed: 5
user@lubuntu:~/Documents/Projects/Bash/UploadWithDelayToFtp$
# 16  
Old 12-27-2011
The problem is in this line:
Quote:
put $1
In your example $1 contains a full hierarchial path name "put" defaults the "to filename" to be the same as the "from filename". Thus the full hierarchial filename is invalid on the destination system.

You need to strip the directory portion off the filename with a command such as "basename", then use both "lcd" an "cd" within the ftp script.
Something like this:
Code:
# In the script (before executing the ftp)
local_filename=`basename $1`
local_dir=`dirname $1`
remote_dir=$5
#Then in the ftp portion of the script:
lcd ${local_dir}
cd ${remote_dir}
put ${local_filename}

This User Gave Thanks to methyl For This Post:
# 17  
Old 12-27-2011
You need a space between the variable and the bracket
This User Gave Thanks to BeefStu For This Post:
# 18  
Old 12-27-2011
Thanks methyl,

Final working code:

Code:
#!/bin/bash
################################COLORS##################################
#Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed 
#
#Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
#
#Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#########################################################################

#set -x verbose #echo on

#file: 1
#USERNAME: 2
#PASSWORD: 3
#SERVER: 4
#REMOTE_PATH: 5
LOCAL_FILENAME=`basename $1`
LOCAL_DIR=`dirname $1`

#login to remote server
echo -e "\e[01;31mConnecting to server...\e[0m"
echo -e "\e[01;34mLocal Directory $LOCAL_DIR...\e[0m"
echo -e "\e[01;34mProcessing file $LOCAL_FILENAME...\e[0m"
ftp -n -i $4 <<END_INPUT
user $2 $3
lcd $LOCAL_DIR
cd $5
put $LOCAL_FILENAME 
quit
END_INPUT
echo -e "\e[01;32mFinihed procesing file $LOCAL_FILENAME...\e[0m"

OUTPUT


Starting process...
Using the following values:
Username: zzzz
Password: zzzz
Server: xxx.xxx.xxx.xxx
Wait time: 5 seconds
Remote Path: /Drop_off/Region_3_prod/EDI
Connecting to server...
Local Directory /home/user/Desktop/MMM...
Processing file EDEInmediataInboundClaims837.dat...
Local directory now /home/user/Desktop/MMM
Finihed procesing file EDEInmediataInboundClaims837.dat...
Seconds until next upload: 5
Procesing file number: 1
Connecting to server...
Local Directory /home/user/Desktop/MMM...
Processing file EDEInmediataInboundClaims837IEDIMMM20111117193200001v1-5010-50.dat...
Local directory now /home/user/Desktop/MMM
Finihed procesing file EDEInmediataInboundClaims837IEDIMMM20111117193200001v1-5010-50.dat...
Seconds until next upload: 5
Procesing file number: 2
Connecting to server...
Local Directory /home/user/Desktop/MMM...
Processing file EDEInmediataInboundClaims837IEDIPMC20111117194600001v1-5010-50.dat...
Local directory now /home/user/Desktop/MMM
Finihed procesing file EDEInmediataInboundClaims837IEDIPMC20111117194600001v1-5010-50.dat...
Seconds until next upload: 5
Procesing file number: 3
Connecting to server...
Local Directory /home/user/Desktop/MMM...
Processing file EDEInmediataInboundClaims837PEDIMMM20111117195600001v1-5010.dat...
Local directory now /home/user/Desktop/MMM
Finihed procesing file EDEInmediataInboundClaims837PEDIMMM20111117195600001v1-5010.dat...
Seconds until next upload: 5
Procesing file number: 4
Connecting to server...
Local Directory /home/user/Desktop/MMM...
Processing file EDEInmediataInboundClaims837PEDIPMC20111117194900001v1-5010-50.dat...
Local directory now /home/user/Desktop/MMM
Finihed procesing file EDEInmediataInboundClaims837PEDIPMC20111117194900001v1-5010-50.dat...
Seconds until next upload: 5
Procesing file number: 5

Total number of files processed: 5
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash function using variable in it syntax error

The below bash function uses multiple variables CODING, SAMPLE, SURVEY, andvariant in it. The user selects the cap function and details are displayed on the screen using the $SURVEY variable, the directory is changed to $SAMPLE and the samples.txt is opened so the user can select the sample to... (6 Replies)
Discussion started by: cmccabe
6 Replies

2. UNIX for Dummies Questions & Answers

Syntax error in for loop

I am using simple for loop, but getting syntax error when I run the code code #!/bin/ksh pls enter number read n for(i=1; i<=n; i++) do echo $i done syntax error + pls enter number + read n (5 Replies)
Discussion started by: stew
5 Replies

3. Shell Programming and Scripting

Variable syntax error in $?

hi all , i just tried to take the status of previous command inside the script using echo $?. It throws me a variable syntax error , but when i use echo $? as an individual command it works perfectly . can anyone Please tell me why am getting a variable syntax error when i use echo $?... (7 Replies)
Discussion started by: Rahul619
7 Replies

4. UNIX for Dummies Questions & Answers

[Solved] Syntax error for awk in a loop

can some one please tell me what is the problem with my syntax:confused: I have 100 files in one folder 1. want to read each of the line by line 2. calculate their number of the words between the first word and the last word of each line 3. create file for each file with number of words... (8 Replies)
Discussion started by: A-V
8 Replies

5. Shell Programming and Scripting

IF loop syntax error

I am trying to run a menu option though IF loops. I keep getting errors not allowed the menu to be processed correctly. Currently it will accept the first 2 statements but then crash on the 3rd. The 2nd and 3rd have the same syntax, so I do not understand why it breaks. #!/bin/bash while... (4 Replies)
Discussion started by: Ironguru
4 Replies

6. Shell Programming and Scripting

Bash (Ubuntu server): Syntax error: "|" unexpected in While-loop

Hello forum, I hope my problem is easy to solve for someone in here! My main task is to copy a large amount of imap-accounts from one server to another. There is a tool (Perl) called imapsync which does the job exellent. Unfortunately I'm only able to run it on one account at a time. After... (3 Replies)
Discussion started by: primaxx
3 Replies

7. Shell Programming and Scripting

Syntax error: Bad for loop variable

Hi Can any one help, I'm trying to run a script that beeps out the ip address from the PC internal speaker with the following script. It keeps throwing the error "Syntax error: Bad for loop variable" on line 16. I know its picking up the IP ADDRESS correctly. Any ideas on whats wrong. I'm... (3 Replies)
Discussion started by: dman
3 Replies

8. Shell Programming and Scripting

for loop not working - syntax error at line 6: `end of file' unexpected

I have a file called test.dat which contains a b I have written a shell script called test.sh for i in `cat test.dat` do echo $i done When i run this script using sh test.sh I get this message - test.sh: syntax error at line 6: `end of file' unexpected What is the... (3 Replies)
Discussion started by: debojyoty
3 Replies

9. Shell Programming and Scripting

Syntax error on variable assignment

Hello all, I have "inherited" a Korn shell script I'm supposed to maintain, and running a "sh -n" on it, I got this syntax error: script.sh: syntax error at line 63: `OB_DEVICE=$' unexpected The line in cause is the first occurence of the usage of perl one-liners. The whole line: ... (2 Replies)
Discussion started by: AdrianM
2 Replies

10. Shell Programming and Scripting

syntax error in while loop

Hi, I have the following script (compile_mercury) and I get this error: I have no idea why...and I have written this script completely in linux (bash) and not in windows. **************** ./compile_mercury: line 136: syntax error near unexpected token `done' ./compile_mercury: line 136:... (1 Reply)
Discussion started by: habzone2007
1 Replies
Login or Register to Ask a Question