Loop with multiple delimited variables


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop with multiple delimited variables
# 1  
Old 03-09-2016
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
Code:
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 need to be able to loop thru values in var1 and get the values of all the variables to execute some commands.

Code:
while IFS=',' read var1 var2 var2
do
  echo "$var1 1 st value   $var2   first value   $var3 first value"

so for 1 st loop for var1 1 i need to use 1 ,a and 0 in a insert script to some tables. so they need to avaliable in 3 different variables so i can do
insert into table values ($var1, $var2, $var3)

in this case i will get
Code:
insert into table (1,'a',0)
insert into table (23,'ab',0)
insert into table 234,'xyz',0)

thanks in advance for some help

Last edited by Scrutinizer; 03-09-2016 at 01:25 PM.. Reason: code tags
# 2  
Old 03-09-2016
Please use code tags as required by forum rules!

Quote:
Originally Posted by rock1
.
.
.
the variables will have variables number of values but same length.(3 in this case )
.
.
.
What does that mean? It obviously contradicts what your sample looks like...?
# 3  
Old 03-09-2016
try something like:
Code:
var1=1,23,234
var2=a,ab,xyz
var3=0,0,0

IFS="," arr1=($var1)
IFS="," arr2=($var2)
IFS="," arr3=($var3)

seq 0 2 | while read i
do
   echo " insert into table (${arr1[$i]}, '${arr2[$i]}', ${arr3[$i]});"
done

This User Gave Thanks to rdrtx1 For This Post:
# 4  
Old 03-09-2016
Howsoever, given the variables as presented in post#1, and bash available, how about
Code:
IFS=, read -a A <<<$var1
IFS=, read -a B <<<$var2
IFS=, read -a C <<<$var3
for i in ${!A[@]}; do echo "insert into table (${A[$i]}, ${B[$i]}, ${C[$i]});" ; done
insert into table (1, a, 0);
insert into table (23, ab, 0);
insert into table (234, xyz, 0);

Quotation of the string values left as an exercise for the reader.
# 5  
Old 03-09-2016
sorry i meant the number of variable value in each variable will always be the same. if var1 has 3 comma separated values so will var2 and var 3.

---------- Post updated at 12:47 PM ---------- Previous update was at 12:39 PM ----------

thanks rdrtx1 and RudiC.. rdrtx1 can you please explain how seq 0 2 works . i would like to understand this ,,is it based on the number of values in the csv variable? thanks
# 6  
Old 03-09-2016
Code:
seq --h

# 7  
Old 03-09-2016
Quote:
Originally Posted by rdrtx1
try something like:
Code:
var1=1,23,234
var2=a,ab,xyz
var3=0,0,0

IFS="," arr1=($var1)
IFS="," arr2=($var2)
IFS="," arr3=($var3)

seq 0 2 | while read i
do
   echo " insert into table (${arr1[$i]}, '${arr2[$i]}', ${arr3[$i]});"
done


So the number of values in the variables may not be the same always. So should I can calculate the length first and use that in the code. This example has 3 for each variable.. but it could be 2 or 4. thanks

---------- Post updated at 01:16 PM ---------- Previous update was at 12:54 PM ----------

Quote:
Originally Posted by rdrtx1
Code:
seq --h

thanks I did something like this:

Code:
var1=1,23,234,1
var2=a,ab,xyz,z
var3=0,0,0,1

len=`echo $var1 | awk -F '[,]' '{print  NF}'`
echo "$len"

--4

Last edited by Scrutinizer; 03-09-2016 at 03:14 PM.. Reason: Code tags and spelling
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. 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

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

5. Shell Programming and Scripting

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... (5 Replies)
Discussion started by: Elizabeth H
5 Replies

6. UNIX for Dummies Questions & Answers

For Loop for a list of tab delimited variables

Hello, I need to run a command for a set of input variables that are present in a tab delimited file, a sample of which is shown below: 1 3749 1 4129 1 5980 2 6201 2 9925 2 6894 3 1338 3 6477 3 6242 3 3632 Every row represents the two input values... (2 Replies)
Discussion started by: Gussifinknottle
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