I have a script and a "config" file that pull variables from. I created the configuration file called config.cfg and used it in my script as such:
#! /bin/bash
if [ -f ./config.cfg ]
then
source ./config.cfg
else
exit
The config files contains a number of different things like
title="Foo Bar - The Untold Story"
desc="This is a verbose description of Foo Bar's Untold Story"
author="S. Nafu"
date="01/01/1932"
image_url="./path_to_image/foo.bar.jpg"
image_link="http://www.foo.bar/foo_bar"
So far, eveything works because I can issue (in the script) the command:
echo $title
and get
Foo Bar - The Untold Story
What I am Trying to Accomplish
I want to create an XML file based on these fields and attributes. Ideally, want to parse the file and determine if the variable was declared, not if it has a value or not. So...here is the code I came up with:
function writeln
{
local attrib=$1
local value=$2
local fmt="%s%s%s\n"
printf $fmt "<$attrib>$value</$attrib>"
}
function writeChannel
{
local fmt="%s\n"
printf $fmt "<channel>"
while read line
do
local xml_attrib=`echo $line | cut -d "=" -f1`
local xml_value=`echo $line | tr -d '"' | cut -d "=" -f2`
writeln $xml_attrib $xml_value
done < config.cfg
}
When I execute the code, I get what is expected:
<title>Foo Bar - the Untold Story</title>
<desc>This is a verbose description of Foo Bar's Untold Story</desc>
....
Now, what I would like to do is use the variable "title" based on what I parsed (assume I don't know that the variables name is "title")
Basically, I want to do take the xml_attrib variable, concatenate a "$" to it and then get the contents. So, using the first line of my config.cfg file,
xml_attrib = "title"
How would I address that string as a var and say
echo $title
Any ideas?
"echo \$$myvar"
– gwillie Aug 31 '15 at 03:03