For loop question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting For loop question
# 1  
Old 06-07-2012
For loop question

Hi,
I'm trying to put together a small script that will read a txt file that contains a list of two columns. Each column is the name of a folder..
e.g.

AIX Server1
AIX Server2
AIX Server3

Code:
$ for i in `cat /opt/apacheprod/scripts/input/copy_list.txt`
do
PLATFORMVAR=`awk ' { print $1 } ' /opt/apacheprod/scripts/input/copy_list.txt`
SERVERVAR=`awk ' { print $2 } ' /opt/apacheprod/scripts/input/copy_list.txt`
echo $PLATFORMVAR $SERVERVAR
done

The main goal is to use the two variables in the for loop to copy files from one location to another but even if I test with an echo it seems to assign both variables with 3 of each instance like below instead of just 1.. Not sure why that is..

AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3


Running this as a ksh on a Solaris machine..
# 2  
Old 06-07-2012
Hi


Code:
$ cat file
AIX Server1
AIX Server2
AIX Server3

Script:
Code:
$ cat test.sh
#!/bin/bash


while read PLATFORMVAR SERVERVAR
do
        echo "PLATFORMVAR: $PLATFORMVAR"
        echo "SERVERVAR: $SERVERVAR"
done < file

Run:
Code:
$ ./test.sh
PLATFORMVAR: AIX
SERVERVAR: Server1
PLATFORMVAR: AIX
SERVERVAR: Server2
PLATFORMVAR: AIX
SERVERVAR: Server3

# 3  
Old 06-07-2012
Hi,
Thanks for the quick reply.. That works perfect for echoing the variables but what I'm really trying to do is the following which is copy a contacts file with in a subfolder and rename it with the prefix of its platform and server name to a new location:

Code:
$ while read PLATFORMVAR SERVERVAR
 do
cp /opt/firewalker/data/$PLATFORMVAR/$SERVERVAR/contacts /opt/apacheprod/scripts/input/$PLATFORMVAR_$SERVERVAR_contacts
done < /opt/apacheprod/scripts/input/copy_list.txt

When I tried the above it only copied the last server in the list and it didn't rename the file..

Last edited by Jazmania; 06-07-2012 at 07:50 AM..
# 4  
Old 06-07-2012
Quote:
Originally Posted by Jazmania
Not sure why that is..

AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3
AIX AIX AIX Server1 Server2 Server3


Running this as a ksh on a Solaris machine..
Those are actually three lines and not the three repetition.
awk reads the whole file each time. So you are assigning column 1 of the whole file in PLATFORMVAR and column 2 in SERVERVAR (including new line characters)

If you quote the variables, you will see what goes wrong.
Code:
echo "$PLATFORMVAR" "$SERVERVAR"

for files processing in shell, always prefer the method provided in #2.
# 5  
Old 06-07-2012
Is "contacts" a file or a directory ?
# 6  
Old 06-07-2012
Quote:
Originally Posted by methyl
Is "contacts" a file or a directory ?
Hi,

contacts is actually a file..
# 7  
Old 06-07-2012
The problem is quite simple. An underscore character is a valid character in a variable name. Therefore the variable $PLATFORMVAR_$SERVERVAR_contacts is blank !
We need some curly brackets to delimit the variables. This is good practice in Shell scripting anyway.

Code:
cp /opt/firewalker/data/${PLATFORMVAR}/${SERVERVAR}/contacts /opt/apacheprod/scripts/input/${PLATFORMVAR}_${SERVERVAR}_contacts

This User Gave Thanks to methyl For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Question about for loop

Hi, I have code like below disk_list=$(ls /root/file1) for disk in $disk_list do pvcreate $i done I know what pvcreate command does, but I do not understand what this $i do here. can someone please explain. (2 Replies)
Discussion started by: stew
2 Replies

2. UNIX for Dummies Questions & Answers

Loop question

Hi, I would really appreciate some help with manipulating a file. Here is my input file: SNP_1 : 1 SNP_11 : 1 SNP_2 -0.12 1 SNP_12 -0.3472 1 SNP_3 -0.708 1 SNP_13 0.5037 1 SNP_4 1.492 0.5 SNP_14 -0.0685 1 SNP_5 1.27 0.5 SNP_15 0.547 ... (3 Replies)
Discussion started by: zajtat
3 Replies

3. Shell Programming and Scripting

While loop Question

Hi, I have a requirement where I have to check for 10 files in Unix location. If all of the files present in that directory then i have execute another process. can you help me resolving this issue. sample location /home/usr abc.txt cde.txt aaaa.txt lll.txt ooo.txt if all the... (3 Replies)
Discussion started by: manasvi24
3 Replies

4. Shell Programming and Scripting

For loop question

I have two files. In file one, there are many columns, but only two of interest to me. Column 1 contains a list of individuals, defined by an ID number. Column 10 contains the diagnosis that each individual has (I am a physician). All together, there are 3000 lines in this file, one line per... (2 Replies)
Discussion started by: awc228
2 Replies

5. Shell Programming and Scripting

For Loop Question

I am struggling with the for loop. I have a file name heros.txt and I would like to go through a list in file where.txt and see if I can find the name from where inside heros. One of the problems that I am having is I dont understand how to setup the for loop to find the list to search.:wall: ... (6 Replies)
Discussion started by: captaindoogles
6 Replies

6. Shell Programming and Scripting

loop question

hey guys what im trying to do is do a simple script that will ask for a password and on the 5th time it says access denied if the right password is still not entered this is what i have so far can anyone help me im not good with scripting thanks in advance #!/bin/bash secretname=secret... (2 Replies)
Discussion started by: randallrivy11
2 Replies

7. Shell Programming and Scripting

For Loop Question

I'm improving the way an existing script handles arrays, but the results aren't what I had in mind: e="Too many consecutive errors... System is probably unstable!" e="Cancelable Timer Wait Failed!" for errcd in ${e} do echo ${errcd} done The for loop interprets the spaces... (2 Replies)
Discussion started by: ironhalo
2 Replies

8. Shell Programming and Scripting

BASH loop inside a loop question

Hi all Sorry for the basic question, but i am writing a shell script to get around a slightly flaky binary that ships with one of our servers. This particular utility randomly generates the correct information and could work first time or may work on the 12th or 100th attempt etc !.... (4 Replies)
Discussion started by: rethink
4 Replies

9. Shell Programming and Scripting

loop question

HI ALL How to read first 10 line from a file using any method (5 Replies)
Discussion started by: aliahsan81
5 Replies

10. Shell Programming and Scripting

Loop question

hi, how would i go about making a loop which gets each line from a single text file, set it to a variable and then print it to screen? thanks eg: #!/bin/sh FILE="somefile.txt" text_line="" what kind of loop would use here? (18 Replies)
Discussion started by: strike
18 Replies
Login or Register to Ask a Question