foreach loop problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting foreach loop problem
# 1  
Old 02-06-2012
foreach loop problem

Dear all,

I wrote a script to download files and move files in directories according to their name.

Now here is the problem:

Both p101 and p360 data download successfully, but when I move them according to the year and month, only p101 data can be placed at the right location, p360, however, only move the data that in Dec.

Second table is the result when I run this script in terminal.

Thank you so much!

 
#!/bin/csh
set directory1 = "/data/htdocs/field_photos/files/by_site"
echo $directory1
set station = (P101 P360)
set year = (2011 2012)
set month = (01 02 03 04 05 06 07 08 09 10 11 12)
foreach year($year)
wget -P $directory1 -nc ftp://brick.unavco.org/in/hodge/P101$year\*.jpg
wget -P $directory1 -nc ftp://brick.unavco.org/in/hodge/P360$year\*.jpg
end
foreach station($station)
foreach year($year)
foreach month($month)
echo $directory1/$station$year\*.jpg $directory1/$station/webcam/$year/$month
chmod g+rw $directory1/$station$year$month*.jpg
mv $directory1/$station$year$month*.jpg $directory1/$station/webcam/$year/$month
end
end
end

 
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/01
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/02
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/03
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/04
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/05
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/06
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/07
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/08
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/09
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/10
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/11
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P1012012*.jpg /data/htdocs/field_photos/files/by_site/P101/webcam/2012/12
chmod: No match.
mv: No match.
/data/htdocs/field_photos/files/by_site/P3602012*.jpg /data/htdocs/field_photos/files/by_site/P360/webcam/2012/12
chmod: No match.
mv: No match.

---------- Post updated at 04:36 PM ---------- Previous update was at 04:35 PM ----------

For the second table, pay more attention to the last few lines.
# 2  
Old 02-07-2012
Hi handsonzhao,

Is it csh or tcsh shell that you are using? From memory, for csh you use a \ in the path names instead of a / for tcsh. You appear to be escaping the wildcard *. You also need to put curly brackets around some of your path names that use a combination of variables. I didn't test your code but my edits for a tcsh script would be as follows:

Code:
 
#!/bin/tcsh  
set directory1 = "/data/htdocs/field_photos/files/by_site" 
echo $directory1 
set station = "P101 P360" 
set year = "2011 2012" 
set month = "01 02 03 04 05 06 07 08 09 10 11 12" 
foreach year($year) 
wget -P $directory1 -nc ftp://brick.unavco.org/in/hodge/P101${year}*.jpg 
wget -P $directory1 -nc ftp://brick.unavco.org/in/hodge/P360${year}*.jpg 
end 
 
foreach station($station) 
foreach year($year) 
foreach month($month) 
echo ${directory1}/${station}${year}*.jpg ${directory1}/${station}/webcam/${year}/$month 
chmod g+rw ${directory1}/${station}${year}${month}*.jpg 
mv ${directory1}/${station}${year}${month}*.jpg ${directory1}/${station}/webcam/${year}/${month} 
end 
end 
end

Hope this helps Smilie)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Foreach loop with two variables

I need to put together a script that will take the contents of two different files (database name and database owner) and put them in two variables within a line: foreach x (`cat /local/hd3/dba/tools/build_db_scripts/dbs`) foreach z (`cat /local/hd3/dba/tools/build_db_scripts/dbas`)... (6 Replies)
Discussion started by: deneuve01
6 Replies

2. UNIX for Dummies Questions & Answers

foreach loop in csh

Hi everyone I'm new to unix and encountered a small problem i couldnt find out a reason why it doesn't work..please help.. in my csh script when i tried to use the foreach loop like this: foreach x ( ls ) echo $x end when i tried to run it, it printed out 'ls' to the std out instead of... (3 Replies)
Discussion started by: ymc1g11
3 Replies

3. UNIX for Dummies Questions & Answers

Using the Foreach loop, Needing help

I am trying to make a script for my Counter-Strike: Source servers. What i am wanting it to do is for it to restart each server, the only way i can think of doing this in through for each. Years what i have at the moment. server_start() { START=`ps x | grep SCREEN | grep $SRV | cut -d '?' -f... (5 Replies)
Discussion started by: grahamn95
5 Replies

4. Shell Programming and Scripting

Using sed with a foreach loop

So I am back again beating my head against the wall with a shell script and getting a headache! I want to change each year in a file (1980, 1981, 1982, 1983, etc.) to the same year followed by a tab. The input is "blah blah (1980) blah blah". I want to get "blah blah (1980 ) blah blah".... (2 Replies)
Discussion started by: Peggy White
2 Replies

5. UNIX for Advanced & Expert Users

Problem with foreach loop

Hi All, Is there any problem with the below 'foreach' loop? foreach risk_factor ($(cat "$rf_list")) where "rf_list=$SCRIPT/Utility/rflist.txt " I'm wondering, it is throwing below error message: syntax error at line 34: `(' unexpected Any idea/suggestions ? Thanks in advance /... (7 Replies)
Discussion started by: ganapati
7 Replies

6. Shell Programming and Scripting

foreach loop

Hi everyone Does anyone know what is wrong with this script. i keep getting errors foreach filename (`cat testing1`) set string=$filename set depth=`echo "$string" echo $depth end the error is the following testing: line 1: syntax error near unexpected token `(' testing: line 1:... (3 Replies)
Discussion started by: ROOZ
3 Replies

7. Shell Programming and Scripting

foreach loop + 2 variables

In a foreach loop, is it possible for the loop to go through 2 arguments instead of one i.e. instead of foreach i (do stuff for i), we have foreach i j(do stuff for i; do stuff for j) I am working under BASH and TCSH shell environments cheers (3 Replies)
Discussion started by: JamesGoh
3 Replies

8. Shell Programming and Scripting

foreach loop

Hi Guys, I have a loop which uses a wildcard i.e. foreach f (*) but when I execute the tcsh file in unix then it gives me an error ->>>>>>>foreach: words not parenthesized<<<<<<<<<<- Any help. (1 Reply)
Discussion started by: abch624
1 Replies

9. Shell Programming and Scripting

Foreach loop

What am I doing wrong with this foreach loop? foreach var ($argv) @sum = $sum + $var (4 Replies)
Discussion started by: haze21
4 Replies

10. UNIX for Dummies Questions & Answers

foreach loop question

Hello, I am new at this forum so please bare with me on this. Within a given directory, I have a list of files in which in each file, I would like to do a substitution. I would like to substitute the string mlcl to mll in each file using the foreach command. I dont quite get how to do that. If... (7 Replies)
Discussion started by: clipski
7 Replies
Login or Register to Ask a Question