SH: two variables in for loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting SH: two variables in for loop
# 1  
Old 07-30-2008
SH: two variables in for loop

Hi, say I have a simple sh script like this:

Code:
for i in a b c d
        do
                for j in 1 2 3 4
                        do
                                echo "$i $j"
                        done
        done

and the output is

Code:
 a 1
 a 2
 a 3
 a 4
 b 1
 b 2
 b 3
 b 4
 c 1
 c 2
 c 3
 c 4
 d 1
 d 2
 d 3
 d 4

how do i make its output like this?

Code:
a 1
b 2
c 3
d 4

TIA
# 2  
Old 07-30-2008

Don't use two loops.

Code:
n=1
for l in a b c d
do
   printf "%s %d\n" "$l" "$n"
   n=$(( $n + 1 ))
done

# 3  
Old 07-30-2008
Thanks, I need to re-qualify my question:

what if its not a number and you can't do math on it?

e.g.
list1:
Code:
mary
eve
delilah

list2:
Code:
joseph
adam
samson

output:
Code:
mary joseph
adam eve
samson delilah


Code:
for i in `cat list1`; ... for j in `cat list2`; ... do ... print $i $j ... done

any way around this?

Last edited by rbatte1; 09-21-2016 at 07:47 AM.. Reason: Added CODE tags
# 4  
Old 07-31-2008
Quote:
Originally Posted by marcpascual
Thanks, I need to re-qualify my question:

what if its not a number and you can't do math on it?

e.g.
list1:
Code:
mary
eve
delilah

list2:
Code:
joseph
adam
samson

output:
Code:
mary joseph
adam eve
samson delilah


Code:
for i in `cat list1`; ... for j in `cat list2`; ... do ... print $i $j ... done

any way around this?
Code:
set -f
IFS='
'
set -- $( cat list2 )
for i in `cat list1`
do
  printf "%s %s\n" "$i" "$1"
  shift
done


Last edited by rbatte1; 09-21-2016 at 07:47 AM..
This User Gave Thanks to cfajohnson For This Post:
# 5  
Old 07-31-2008
amazing, thank you!
# 6  
Old 07-31-2008
Quote:
Originally Posted by cfajohnson
Code:
set -f
IFS='
'
set -- $( cat list2 )
for i in `cat list1`
do
  printf "%s %s\n" "$i" "$1"
  shift
done

KISS principle states that design simplicity should be a key goal and unnecessary complexity avoided. Smilie
Code:
paste -d ' ' list1 list2


Last edited by danmero; 07-31-2008 at 12:40 AM..
# 7  
Old 08-01-2008
Quote:
Originally Posted by marcpascual
how do i make its output like this?

Code:
a 1
b 2
c 3
d 4

It seems you can't have multiple "x in y" terms in a for loop, so the next best thing is probably to rewrite the loop as an index iterator:
Code:
is=(a b c d)
js=(1 2 3 4)

for ((i = 0; i < 4; i++)) 
	do echo ${is[i]} ${js[i]}
done

It's not as nice, but still relatively easy to read, especially if you define your lists together. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with variables in loop

Hello, please assist: users="test1 test2" keytest1="abcd" keytest2="dbcd" for i in $users do echo "$key${i}" > fileout done So, my objective is to take the current user (ie test1) in loop and echo its associated keyname (ie keytest1) variable to a file. The echo... (2 Replies)
Discussion started by: motdman
2 Replies

2. Shell Programming and Scripting

Loop through variables

I am pretty new to Unix. Trying to pick up some slack while a coworker is out on vacation. Basically the script is working fine however when I go through the testing phase and have to make mods it is a pita. Here is an example of what I have #!/bin/ksh if then echo... (8 Replies)
Discussion started by: biobill
8 Replies

3. Shell Programming and Scripting

Need to loop three variables

Hi, I have a out from a command i need to grep a report. For that i need loop 3 variable for that. How i can loop need help. Symmetrix ID : 123456 Masking View Name : Host16 Last updated at : 04:13:06 PM on Thu Mar 17,2011 Initiator Group Name : Host16 Host... (3 Replies)
Discussion started by: ranjancom2000
3 Replies

4. Shell Programming and Scripting

for loop with 2 variables

i am having a file contants as below my requirement is for file in `awk -F "," '{print $8,$9}'` <temp.txt echo "$file" echo "$file">test.txt a=`awk -F "," '{print $1}' `<test.txt b=`awk -F "," '{print $2}' `<test.txt but script reads , i want both the vales for further... (5 Replies)
Discussion started by: sagar_1986
5 Replies

5. Shell Programming and Scripting

Help with a For loop and variables

Greetings. I'm completely new to shell scripting and quickly trying to catch on. Here's my scenario: I have a text file, named ip.txt, containing IP addresses. I want to automatically perform a whois query on each address in the file, search the output for the country, and then put both the IP... (4 Replies)
Discussion started by: molnir
4 Replies

6. Shell Programming and Scripting

Need help in for loop with 2 variables

Hi, I need help on for loop need to add domain and IP In domain list 1.com 2.com 3.com In Ip list 1.1.0.1 1.2.0.1 1.3.0.1 1.com 1.1.0.1 2.com 1.2.0.1 3.com 1.3.0.1 I need to excute this command (4 Replies)
Discussion started by: ranjancom2000
4 Replies

7. Shell Programming and Scripting

Two variables in a for loop

Can we assign two variables in a for loop? I have an input file: 000301|20100502 835101|20100502 I want to read this file in a for loop and assign values to two different variables. I did this now but did not work for STORE,RUNDATE in `awk -F\| '{print $1,$2}' inputfile ... (4 Replies)
Discussion started by: gpaulose
4 Replies

8. 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

9. Shell Programming and Scripting

Is there a better way I could have run this loop. (For loop with two variables)

Sorry for such a dreadful title, but I'm not sure how to be more descriptive. I'm hoping some of the more gurutastic out there can take a look at a solution I came up with to a problem, and advice if there are better ways to have gone about it. To make a long story short around 20K pieces of... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

10. Shell Programming and Scripting

using variables outside a while loop

Hi Guys, I have a scripts that uses a while loop to read a file and set 2 variables. How can I do this so the variables can be used outside the while loop ? Below is an example....# ./junk2 -m -e user EXE=user master=TRUE DB_TAG=PRODUCT In loop MST=MST=testsvr1:3110 In loop ARGS=... (2 Replies)
Discussion started by: Tornado
2 Replies
Login or Register to Ask a Question