How to use for/while loop with multiple variables?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to use for/while loop with multiple variables?
# 1  
Old 06-19-2013
How to use for/while loop with multiple variables?

Hi,

I have two variables like below which will always be of the same size
a=1:2:3
b=A:B:C

I need to use a for/while loop that will have both the variables available. I cannot use an array here and will probably might iterate through the variable as echo $a | tr ':' '\n' and thus iterate through the variables one by one. I am doing the below

Code:
 
for i in `echo $a | tr ':' '\n'`
do
  echo "the variable is $i"
done

But I want to traverse both the lists at the same time. So for eg if I have the first element in list 1, I should also have the first element in list 2. I could have done this with a count variable, but wanted to see if there is another easy way
# 2  
Old 06-19-2013
You don't need backticks and tr, the shell's own built-in splitting will suffice.

How about this?

Code:
OLDIFS="$IFS"
IFS=":"

set -- $a # Sets $1 $2 ...  parameters to 1 2 ...

for x in $b
do
        echo $x $1
        shift # Removes first parameter, so 1 2 ... becomes 2 ...
done

IFS="$OLDIFS"

These 2 Users Gave Thanks to Corona688 For This Post:
# 3  
Old 06-19-2013
Thanks a bunch for the quick response. Is there a way you can help me with this using the same format , like the "echo" and "trim". The codereview people will ask for consistency and all our coding has been done previously in this fomat. So I was trying to get something in the same format
# 4  
Old 06-19-2013
If the code review people expect your code to remain overblown and bugprone because all your code before was too, both you and your reviewers have a big problem...

You have everything you need to do this yourself if you insist on doing so. Remove all the IFS stuff, and anywhere you see a simple easy $a and $b, slap in one of your big echo | tr kludges.
# 5  
Old 06-19-2013
Quote:
Originally Posted by Elizabeth H
Code:
 
for i in `echo $a | tr ':' '\n'`

In case it's an oversight, be aware that command substitution strips all trailing newlines. If there are empty fields at the end of $a, they will be lost.

Regards,
Alister
# 6  
Old 06-19-2013
All bash:
Code:
while IFS=: read i && IFS=: read j<&3
do
  printf "%s\n" "$i, $j"
done <<<"${a//:/$'\n'}" 3<<<"${b//:/$'\n'}"

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Displaying multiple variables in for loop

Hi! I've run into a problem where my variables are displayed in the wrong order. Basically I'm supposed to use a file that has information like this username:firstname:lastname:etc:etc. What I'm interested in doing is reformating it into a something more like this: username lastname,... (2 Replies)
Discussion started by: reindeermountai
2 Replies

2. Shell Programming and Scripting

Multiple variables using awk and for loop for web form submission

Hi My goal is to fill an HTML form and submit. What I have managed to do: 1. curl command to fill up the form and submit 2. a file which has the input curl command: curl -v -b cookie.txt -d __CSRFToken__=dc23d5da47953b3b390ec68d972af10380908b14 -d do=create -d a=open -d... (10 Replies)
Discussion started by: zorrox
10 Replies

3. Shell Programming and Scripting

Loop with multiple delimited variables

hi, i need a portion in a audit logging shell script where i have to loop thru multiple variables. I need some help in accomplishing this. i have 3 variables var1=1,23,234 var2=a,ab,xyz var3=0,0,0 the variables will have variables number of values but same length.(3 in this case ) i... (10 Replies)
Discussion started by: rock1
10 Replies

4. UNIX for Dummies Questions & Answers

Reading multiple variables in a loop

Hi, I managed to read and print variable as shown in the below code. table_name=table1,table2,table3 i=0 IFS="," for i in $table_name do echo $i done Is there a way how I can read more than one variable. For example I need to read 2 variables and populate the output... (6 Replies)
Discussion started by: shash
6 Replies

5. UNIX for Dummies Questions & Answers

Multiple variables to be passed in a loop

Hi, I need to pass the multiple values of src1 to another variable. I managed to print it but not sure how to assign it to a variable in a loop. src1=01,02,03 echo $src1|awk 'BEGIN {FS=","} {for(i=1;i<=NF;i++) print $i}' I need to pass the value as src2=01 src2=02 src2=03 Thanks... (4 Replies)
Discussion started by: shash
4 Replies

6. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

7. UNIX for Dummies Questions & Answers

multiple variables in for loop

hi, I want an equivalent for loop for this C code in unix shell script... for(int i,int j;i<5;i++,j++) { } Please reply soon Regards Navjot (1 Reply)
Discussion started by: navjotsingh
1 Replies

8. Shell Programming and Scripting

While loop with Multiple variables

Hi , I am trying to write a script in kshell with while loop ,its like count=1 count_cmp=1 while ; do tail -$count tempfile | head -1 > tempstring ....... done However i get CIF.sh: line 33: ' I have checked thetrailing spaces , not sure what is... (4 Replies)
Discussion started by: amit1_x
4 Replies

9. Shell Programming and Scripting

for loop with multiple variables ?

I have a script which selects two 'sets' of system LVM device files from a tabular file 'mapfile' using awk : LIVELV=`awk '{print($1)}' mapfile` BCVLV=`awk '{print($3)}' mapfile` I wanted to pass these 'sets' into an LVM command 'loop' along the lines of : lvmerge $BCVLV $LIVELV ie.... (3 Replies)
Discussion started by: fosterian
3 Replies
Login or Register to Ask a Question