dynamic variables


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers dynamic variables
# 1  
Old 09-02-2008
dynamic variables

I am new to unix and the following problem is bugging me.Smilie

var1="hello1"
var2="hello2"
var3="hello3"
counter=1
while [ $counter -le 3]
do

echo $var$counter

done

the idea here is to display the value of "var" based on the counter.
I am using the korn shell. I used array here but the problem is that I am executing the script from another script and so the prompt comes as "-A bad option"
Can the above problem be done in another way i.e without using arrays.
Can eval be useful here? please help.
code snippet for this would be very helpful

TIA
# 2  
Old 09-02-2008
Quote:
Originally Posted by max_payne1234
Can eval be useful here?
eval is useful here and this sample shows how it works:

Code:
#!/bin/sh

var1="hello1"
var2="hello2"
var3="hello3"
counter=1

while [ $counter -le 3 ]
do
  eval "eval_var=\$var${counter}"
  echo ${eval_var}
  let counter=counter+1
done

The backslash before the "$" sign in the eval command is to prevent the shell to expand the variable.

Regards

Last edited by Franklin52; 09-02-2008 at 03:04 PM..
# 3  
Old 09-02-2008
If you are using Kornshell 93 (ksh93) instread of ksh88 or pdksh, the following works
Code:
#!/bin/ksh93

var1="hello1"
var2="hello2"
var3="hello3"

for (( counter=1; counter <= 3; counter++ ))
do
   nameref myvar="var"${counter}
   print $myvar
done

# 4  
Old 09-02-2008
try this method, This way you can forget about hard coding your numeric of "3" so you know where to stop on your loop.

This adds the ability to add as many dymanic vars as you want.

Enjoy!

# You can set the array in two ways
# Method 1
# hellos="hello1 hello2 hello3"
# set -A myvar $hellos

#Method two
# myvar[0]="hello1"
# myvar[1]="hello2"
# myvar[2]="hello3"

# if your useing only one array then use what you
# feel is best for you.
# Method two offerres the option of adding more arrays
# that have a direct association to each other
# for example:

myvar[0]="hello1" ; othervar[0]="Bob"
myvar[1]="hello2" ; othervar[1]="Joe"
myvar[2]="hello3" ; othervar[2]="Mary"


count=0

# by using the ${#myvar[*]} you can add as many
# "myvars" and "othervars" as you want with out
# the need to rememdber the modify the max counter
# thus knowing where to end your loop.

while [ $count -lt ${#myvar[*]} ]
do
echo "${myvar[${count}]} - ${othervar[${count}]}"
let count=$count+1
done
# 5  
Old 09-05-2008
thanks for the reply....igot one more solution .. to use eval

var=var$counter
eval var =\$$var

it works fine
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Generating dynamic variables

Hi , i am unable to generate dynamic variables can any one please help me on the below issue j=1 {record_count_"$j"}=`db2 -xselect substr\(job_name,24\) rec_count from $libname.audit_table_nrt where job_name like \'DATAMART_DEL_RUN%\' and STS_FLAG=\'E\' and seq_no=$i` echo " record... (3 Replies)
Discussion started by: bhaskar v
3 Replies

2. Shell Programming and Scripting

'Dynamic' setting of variables in bash script

Hi all, I want to dynamically set variables in a bash script. I made a naive attempt in a while loop that hopefully can clarify the idea. n=0; echo "$lst" | while read p; do n=$(($n+1)); p"$n"="$p"; done The error message is: bash: p1=line1: command not found bash: p2=line2: command... (8 Replies)
Discussion started by: jeppe83
8 Replies

3. Shell Programming and Scripting

Create, validate and using dynamic variables in Bash scripting

Hi All, I am really struggling to solve this problem, this might be small but I am not able to, can somebody help me? I have few directories and these directories receives text files in large amount with in fraction of seconds. So I just want to send all the files in current directory to... (2 Replies)
Discussion started by: VasuKukkapalli
2 Replies

4. Shell Programming and Scripting

Creating Dynamic Variables from a Flat File

Greetings all, Been trying to do my Googling and forum searches but can't seem to lock in on a solution. I have a script that parses a log and collects all the uniq events to a flat file. Some days might have 50 unique events, other days might have 75. (Hence my reference to dynamic.) ... (2 Replies)
Discussion started by: sjrupp
2 Replies

5. Shell Programming and Scripting

dynamic variables - eval - expand etc.

Hello, so i'm making a script, using dynamic variables and trying to expand them. So far it hasn't worked out too well so it seems that I need some help from you, the elite. Example: #!/bin/sh counter=0 until (($counter>5)) counter2=1 until (($counter2>6)); do if ;... (5 Replies)
Discussion started by: TehOne
5 Replies

6. Shell Programming and Scripting

Defining Dynamic Number of Variables in a Bash Script

Code: $ cat test.bash #!/bin/bash job=$1 steps=$2 num=$(echo "$@" | wc -w) Example Submission: $ ./test.bash BS01 3 1 2 3 What: (2 Replies)
Discussion started by: mkastin
2 Replies

7. Shell Programming and Scripting

Dynamic variables and eval

Hi, I need some direction with the following. The below code is semi-psuedo code which will hopefully make it easier to understand what I am trying to achieve: for i in `echo ${testarray }` do let c=c+1 eval "first$c=$i" while... (4 Replies)
Discussion started by: yonderboy
4 Replies

8. Shell Programming and Scripting

Problem with dynamic variables outside the loop

Hi All, Shell is ksh I've given portion of the script here to explain the problem. It will accept 2 input parameters . in_file1=$1 in_file2=$2 outbound_dir=/home/outbound for i in 1 2 do eval file$i=$outbound_dir/\$in_file$i eval echo "filename is \$file$i" ... (4 Replies)
Discussion started by: kk17
4 Replies

9. Programming

global variables and dynamic allocation

Hi, is it possible in C to allocate dynamically a global variable?? (3 Replies)
Discussion started by: littleboyblu
3 Replies

10. Shell Programming and Scripting

Dynamic variables within shell script

Hi Gurus, I have a requirement of writting the shell script where it should ask me two values FND_TOP=/d02/app/oracle/xxx/fnd/11.5.0 CDCRM_TOP=/d02/app/oracle/xxx/cdcrm/11.5.0 and then keep these values stored as variables for the execution of rest of the script. Because, I have to... (2 Replies)
Discussion started by: isingh786
2 Replies
Login or Register to Ask a Question