Dynamic variable assignment


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Dynamic variable assignment
# 1  
Old 05-15-2009
Dynamic variable assignment

Hi All,

I have the below scenario:

A file test.cfg with three fields>>

DATA1 DATA2 DATA3

In the script I need to assign each of the fields to variables. The number of fields will not be constant (this case we have three). Im trying to do something like this:

NUM=1
OUT_DAT_NO=3

while [ $NUM -le $OUT_DAT_NO ]
do
OUT_DAT$NUM=`cat test.cfg | awk '{print $NUM}'`
NUM=`expr $NUM + 1`
done

The output should be like this:


OUT_DAT1=DATA1
OUT_DAT2=DATA2
OUT_DAT3=DATA3



Is there any way of doing this in bash?

Thanks,
D
# 2  
Old 05-15-2009
You can use read. bash assigns values to variables for the fields present, leaves the rest as zero-length strings.
Code:
cat test.cfg | read OUT_DAT1 OUT_DAT2 OUT_DAT3 OUT_DAT4

I there are three fields this [ -z $OUT_DAT4 ] will be true because OUT_DAT4 is zero-length
# 3  
Old 05-15-2009
Consider:

Code:
set `head -1 test.cfg`
for element;do
        echo $element
done

You can use $(head -1 test.cfg) if you want something more bash/ksh specific.
# 4  
Old 05-15-2009
Note... my soln only works up to the limit of parameters that could be put on the shell command line.

So number of fields and size of the data in the field will cause it to blow up possibly.
# 5  
Old 05-16-2009
Try this:

Code:
awk '{for(i=1;i<=NF;i++) printf("%s%s\n","OUT_"$i"=",$i)}' filename


cheers,
Devaraj Takhellambam
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Variable Assignment

Hi I am facing a problem. export local_folder=/opt/app/ cd /opt/app/abc/ abcversion="abc*" (abcga5 is inside /opt/app/abc/) echo $abcversion (it echoes the correct version as abcga5 ) Now when I reuse the value of abcversion for a below path: export... (6 Replies)
Discussion started by: ankur328
6 Replies

2. Shell Programming and Scripting

Dynamic variable assignment

#!/bin/sh if then echo "Insufficient number of arguments ">> error".log" ; echo "Please check error log for more details"; exit 1 ; else file_name=$1".csv"; fi ; in_par_number=`head -n1 $file_name | sed 's///g' | wc -c` read -a arr <<< `head -n1 $file_name | sed 's// /g'` ... (6 Replies)
Discussion started by: JayDoshi
6 Replies

3. Shell Programming and Scripting

Same Variable Assignment

Hi I have a strange problem: In my shell script I am performing a copy task: . prop.txt cp -r $dir/ $dir/archive $dir is fetched from a property file (prop.txt) which stores its value dir=/opt/data Now the problem is another dir1 comes into picture. I only want to add... (1 Reply)
Discussion started by: ankur328
1 Replies

4. Shell Programming and Scripting

Dynamic variable assignment

My Code : -------------------------------------------- #!/bin/bash for i in `echo server1 server2` do eval ${i}_name = "apache" echo ${i}_name done -------------------------------------------- Current output : >./test.sh ./test.sh: line 5: server1_name: command not found... (3 Replies)
Discussion started by: sameermohite
3 Replies

5. Shell Programming and Scripting

'eval' used in variable assignment

pattern1=book { x=1 eval echo \$pattern$x } book (this is the output) But when I assign a variable to the output of the eval it doesn't work unless I prefix 2 times backslash before $ as shown below. { a=`eval echo \\$pattern$x` echo $a } book Why here twice "\" has to be... (3 Replies)
Discussion started by: ravisingh
3 Replies

6. Shell Programming and Scripting

Help with variable assignment

Hi, In AIX I have a variable with , (coma) separated values assigned to it like shown below var1=apple,boy,chris i want to convert this to var1='apple','boy','chris' the number of values assigned to var1 might change and it could be from 1 to n any suggestions please? (3 Replies)
Discussion started by: rahul9909
3 Replies

7. Shell Programming and Scripting

Dynamic variable assignment

Hi all, I’m very new to UNIX programming. I have a question on dynamic variable 1. I’m having delimited file (only one row). First of all, I want to count number of columns based on delimiter. Then I want to create number of variables equal to number of fields. Say number of... (5 Replies)
Discussion started by: mkarthykeyan
5 Replies

8. Shell Programming and Scripting

eval and variable assignment

Hi, i have an issue with eval and variable assignment. 1) i have a date value in a variable and that date is part of a filename, var1=20100331 file1=${var1}-D1-0092.xml.zip file2=${var2}-D2-0092.xml.zip file3=${var3}-D3-0092.xml.zip i am passing the above variables to a script via... (11 Replies)
Discussion started by: mohanpadamata
11 Replies

9. Shell Programming and Scripting

variable assignment using awk

Guys, Could you please help me out. I need two values in two variables using awk from the o/p of grep. example:- grep sdosanjh <filename> sdosanjh myhostname myfilename NOW WHAT I WANT IS :- sdosanjh should be in variable (say NAME) myhostname should be in variable (say... (8 Replies)
Discussion started by: sdosanjh
8 Replies

10. UNIX for Dummies Questions & Answers

@ in a variable assignment

Hello Everybody, Does anyone know what the @ symbol means in a csh script, if used with a variable assignment as below @ line = 1 why not just use.... set line=1 Many thanks rkap (1 Reply)
Discussion started by: rkap
1 Replies
Login or Register to Ask a Question