Eu tenho um script e um arquivo "config" que extrai as variáveis. Eu criei o arquivo de configuração chamado config.cfg e usei no meu script como tal:
#! /bin/bash
if [ -f ./config.cfg ]
then
source ./config.cfg
else
exit
Os arquivos de configuração contêm várias coisas diferentes, como
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"
Até agora, o eveything funciona porque eu posso emitir (no script) o comando:
echo $title
e obtenha
Foo Bar - The Untold Story
O que estou tentando realizar
Eu quero criar um arquivo XML com base nesses campos e atributos. O ideal é analisar o arquivo e determinar se a variável foi declarada, não se tiver um valor ou não. Então ... aqui está o código que eu criei:
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
}
Quando executo o código, recebo o que é esperado:
<title>Foo Bar - the Untold Story</title>
<desc>This is a verbose description of Foo Bar's Untold Story</desc>
....
Agora, o que eu gostaria de fazer é usar a variável "title" com base no que eu analisei (presumo que não sei se o nome da variável é "title")
Basicamente, eu quero pegar a variável
xml_attrib , concatenar um "$" para ela e então pegar o conteúdo. Então, usando a primeira linha do meu arquivo
config.cfg ,
xml_attrib = "title"
Como eu endereçaria essa string como um var e diga
echo $title
Alguma idéia?