[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Shell Scripts e Variáveis




Caros, tudo bem ?

Estou com uma dúvida de programação de shelll script.

Criei um arquivo de configurações como por exemplo "arquivo.conf"

Dentro do arquivo.conf em tenho configurações do tipo campo, exatamente como o httpd.conf e outros.

Tipo assim:

# Arquivo de configuração de backup e restore
#

# Diretório de Backup
dir_backup=/backup

# Diretório de Restore
dir_restore=/restore

# Nome do arquivo gerado
nom_arq_tar=backup.tar.gz

E assim vai...

Porém, no script que controla o backup, eu preciso recuperar essas variáveis do arquivo de configuração.

Eu tentei do jeito mais dinâmico e não deu - já explico porque não deu.

Do jeito fixo, pegando o valor pelo número da linha, deu certo - mas não posso alterar ou incluir linhas.

Como por exemplo:

dir_backup=`head -n 15 arquivo.conf | tail -n 1 | cut -f2 -d= -s`
dir_restore=`head -n 20 arquivo.conf | tail -n 1 | cut -f2 -d= -s`
nom_arq_tar=`head -n 25 arquivo.conf | tail -n 1 | cut -f2 -d= -s`

Desse jeito, funciona e eu posso recuperar o valor das variáveis para uso dentro do script.

Mas no caso dinâmico como abaixo, não consigo recuperar o valor das variáveis para uso fora do loop:

egrep -v "#" arquivo.conf | while read linha; do
   campo=`echo "$linha" | cut -f1 -d= -s`;
   valor=`echo "$linha" | cut -f2 -d= -s`;

   if test "$campo" != ""; then
       if test "$campo" = "dir_backup"; then
           dir_backup="$valor";
       fi;
       if test "$campo" = "dir_restore"; then
           dir_restore="$valor";
       fi;
       if test "$campo" = "nom_arq_tar"; then
           nom_arq_tar="$valor";
       fi;
   fi;
done;

Desse jeito acima, ficaria show, pois não importa a ordem, nem se tem comentários posteriores.

O script está correto e funciona direito, não fosse o fato de as variáveis perderem o valor fora do loop-while.

Alguma dica ?

Abraços,

Sérgio - Iniciante no Mundo Debian.

=============================================

	

	
		
_______________________________________________________ Yahoo! doce lar. Faça do Yahoo! sua homepage. http://br.yahoo.com/homepageset.html


Reply to: