What I'm trying to do is loop over environment variables. I have a number of installs that change and each install has 3 IPs to push files to and run scripts on, and I want to automate this as much as possible (so that I only have to modify a file that I'll source with the environment variables). The following is a simplified version that once I figure out I can solve my problem.
So given in my.props:
COUNT=2
A_0=foo
B_0=bar
A_1=fizz
B_1=buzz
I want to fill in the for loop in the following script
#!/bin/bash
. <path>/my.props
for ((i=0; i < COUNT; i++))
do
<script here>
done
So that I can get the values from the environment variables. Like the following(but that actually work):
echo $A_$i $B_$i
or
A=A_$i
B=B_$i
echo $A $B
returns foo bar then fizz buzz
You can iterate
num
and usedeclare
to create the variables and indirection to reference them. But wouldn't you really prefer to use arrays?or
How about this?
Found the answer at Indirect References Chapter of Advanced Bash Scripting Guide
I needed to do
Not sure I entirely follow your question, but if you want the variables availbe to children scripts use the
export
built-in:From what I think you might trying to do, I would just put the IPs in one file, one IP per line. Then have the install script read the ip as a command line argument:
If there is more than one piece of data per record, than you can deliminate them: