Calling a Variable based on a Variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Calling a Variable based on a Variable
# 1  
Old 06-04-2013
Calling a Variable based on a Variable

Hi all,

I have a source config file with variables like so:
Code:
eth1_ip=192.168.1.99
eth2_ip=192.168.1.123
eth3_ip=172.16.1.1

I am trying to run a script which loops based on the number of eth interfaces on a machine and therefore modifies the variable it calls in the environment based on the interface in each loop:

Code:
source config.conf
for int in `ip link |grep eth[0-7] |cut -d " " -f 2|cut -d":" -f1`; do

echo $int_ip

done

Any ideas??

thanks,Ll
# 2  
Old 06-04-2013
Code:
links=$(ip link |grep eth[0-7] |cut -d " " -f 2|cut -d":" -f1` | tr -s '\n' ' ')
for i in $links
do
  echo $i
done

Is that what you are asking -- not clear to me, so I guessed. The cut and chop probably should be replaced with an awk call.
Code:
links=$(ip link |grep eth[0-7] | awk -F '[ :]' '{printf("%s ", $3)}')

This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 06-05-2013
That is what the current code does.
But I need it to source the variables from config.conf being;
Code:
eth1_ip=192.168.1.99
eth2_ip=192.168.1.123
eth3_ip=172.16.1.1

And re-write the variable from the config file so that it will echo;
Code:
192.168.1.99
192.168.1.123 
172.16.1.1

for variables;
Code:
eth1_ip
eth2_ip
eth3_ip

so the statement needs to look something like;
Code:
echo $($int"_ip")

But the above statement is only my guess.

---------- Post updated 06-06-13 at 12:17 AM ---------- Previous update was 05-06-13 at 12:58 PM ----------

Ok I have cracked it:
Code:
# config.conf
eth1_ip=192.168.1.1

Code:
source config.conf
for int in `ip link |grep eth[0-7] |cut -d " " -f 2|cut -d":" -f1`; do

ethip=$"$int"_ip

echo ${!ethip}        # This gives the output I was looking for.

done


Last edited by landossa; 06-05-2013 at 07:41 PM..
This User Gave Thanks to landossa For This Post:
# 4  
Old 06-05-2013
Thanks for informing us !
# 5  
Old 06-06-2013
Note that ${! ... } is a bashism and does not work in other shells.

A more portable method is to use eval, i.e.
Code:
eth1_ip=192.168.1.1
int=eth1

ethip=$"$int"_ip
eval echo \$${ethip}

# 6  
Old 06-06-2013
Or better yet, just use an array. Dynamic variable names are seldom a good idea. You can get the length of an array, for instance, but cannot easily tell how many eth? variables you have.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Calling specific characters from a find variable

I'm trying to do something like this: find . -name blablabla -exec ln -s ./"{:53:14} blablabla" \; The idea is find blablabla and create a symbolic link to it using part of it's path and then it's name, "blablabla." I just don't know if I can call characters out of a find variable. ... (16 Replies)
Discussion started by: scribling
16 Replies

2. Shell Programming and Scripting

Calling a variable of variable from a file

Hi All, I have file which have looks like below abc=${def} def=${efg} efg= "this is the actual value" based on "abc" value I have to call "efg" value , Am using below lines but it is not working #!/bin/bash source file.txt echo $abc Please wrap all code, files, input &... (5 Replies)
Discussion started by: Prashanth.K
5 Replies

3. UNIX for Dummies Questions & Answers

Calling a variable from a variable.

Hi everyone, Is it possible to set a variable that calls another variable? I.E. SCRIPT=MY_SCRIPT.ksh ${VAR5} ${VAR5} is set earlier in the script, and I want to be able to call this when setting the ${SCRIPT} variable. I hope this makes sense. Thanks for your help. (3 Replies)
Discussion started by: jimbojames
3 Replies

4. Shell Programming and Scripting

Csh variable calling problem

First post on here. So I use csh shells for my research (physics... not a CS person). I am trying to rerun the same scripts, but there are ~10 files that have similar variables that I have to change for each different configuration, so I would like one central file for the variables I change that... (3 Replies)
Discussion started by: sabrepride
3 Replies

5. Shell Programming and Scripting

Calling a variable in another variable

echo "$previous_tmp$i" I have a 5 variables like previous1 previous2 previous3 previous4 previous5 I want to use a for loop to call them one by one. How can I ?:confused: (2 Replies)
Discussion started by: Junaid Subhani
2 Replies

6. Shell Programming and Scripting

PERL script -- calling 'sed' by passing 'variable value'.

Hi Friends, I'm calling 'sed' command inside one perl script, which is to list directory names which are having some date value as their names (in the form YYYYMMDD) with in the range (start and end date). #!/usr/bin/perl -w use strict; use warnings; my $DATA = "/export/home/ganapa"; my... (5 Replies)
Discussion started by: ganapati
5 Replies

7. UNIX for Dummies Questions & Answers

Calling a function through a variable

Hey folks, I'm pretty new to unix programming. I was trying to get something to work but it's not doing what I expected. #!/bin/ksh . ./functions.sh STRING=function_1 FUNCTION="$STRING" RETURN=eval $FUNCTION echo "value of $FUNCTION function is: $RETURN" All i'm... (5 Replies)
Discussion started by: Irrational
5 Replies

8. Shell Programming and Scripting

create variable name based on another variable's value

Hello, I am needing to create a variable and assign it a value based on the value of a previosly defined variable... I am using KSH.. Example: VAR1=COMPUTER1 I need another variable like ${VAR1}_FLAG="Y", so it would actually be COMPUTER1_FLAG="Y". I will be looping through many values in... (2 Replies)
Discussion started by: benefactr
2 Replies

9. Shell Programming and Scripting

calling a variable to echo to a log

Hi everyone, I am trying to create a simple batch file to make SQL backups. this part of it works fine. Currently the script can mysql dump the databases, compress them, delete the .sql, compress the individual tar.gz into one larger one, delete the smaller files, encrypt the final tar.gz and... (1 Reply)
Discussion started by: luma
1 Replies

10. Shell Programming and Scripting

calling a aliased variable

Issue: i have variable A which is an alias for variable B which is equal to "THIS IS A TEST" when every i echo variable A i only get the alias name for variable B, NOT the contents of variable B. HOSTNAME# echo $TESTIT + echo THIS IS A TEST THIS IS A TEST HOSTNAME# ls -l total... (10 Replies)
Discussion started by: Optimus_P
10 Replies
Login or Register to Ask a Question