Exportar variáveis de um script no mesmo sub-shell

Publicado por krum em 16/10/2015

[ Hits: 4.749 ]

 


Exportar variáveis de um script no mesmo sub-shell



Estava com o seguinte problema, precisava compartilhar as variáveis de um script em shell que compartilhava as variáveis com outros scripts em shell.

O "sql1.sh" tinha as variáveis globais e executava outros comandos abaixo.

Supondo que dentro de sql1.sh tenho as seguintes variáveis:

CONFIG=/data/
BACKUP=$CONFIG/backup..

Tentei usar o "export VARIAVEL" para tornar ele global aos scripts, como eram muitas variáveis resolvi procurar uma maneira mais simples.

Aí veio a solução, executar eles no mesmo sub-shell da seguinte forma.

Dentro do script1 coloque para chamar o script2 executando da seguinte forma:

source ./sql2.sh

Dentro de sql2.sh uso as variáveis no script.

#!/bin/bash

if [ -d "$BACKUP" ]; then
   source ./sql3.sh
else
   echo "Erro"
fi

Dentro de sql3.sh crio mais um diretório baseado nas variáveis recebidas:

#!/bin/bash

if [ -d "$BACKUP" ]; then
   mkdir $BACKUP/etc
else
   echo "Erro"
fi

Caso for chamá-lo do terminal, compartilhando a variável com o outro script, faça da seguinte forma:

./sql1.sh && . ./sql2.sh && . ./sql3.sh

É isso aí =)

Outras dicas deste autor

Como descobrir seu IP externo com cURL

Slackware com kernel 3.10 - Erro com driver NVidia [Resolvido]

Logs do Squid de forma legível

Redimensionar imagens VDI (VirtualBox) no GNU/Linux

PHP - Fatal error: Allowed memory size of bytes exhausted [Resolvido]

Leitura recomendada

Arrays no BASH

Operações matemáticas diretamente pelo bash

Como lidar com variáveis retornadas pelo Expect - removendo CR do fim de linha

Como criar a configuração de temas para linguagens no gedit

DictConv: Converta dicionários do Babylon para o StarDict

  

Comentários
[1] Comentário enviado por krum em 16/10/2015 - 11:07h

Valeu @zezaocapoeira =)

[2] Comentário enviado por Miqueloti em 16/10/2015 - 19:07h

Acredito que dê para passar o conteúdo por parâmetro (se eu não estiver enganado, strings pelo menos funcionam assim)

./sql2.sh $CONFIG $BACKUP

dentro do código de sql2.sh as variáveis seriam utilizadas inicialmente com $1 e $2

[3] Comentário enviado por removido em 18/10/2015 - 01:40h


[2] Comentário enviado por Miqueloti em 16/10/2015 - 19:07h

Acredito que dê para passar o conteúdo por parâmetro (se eu não estiver enganado, strings pelo menos funcionam assim)

./sql2.sh $CONFIG $BACKUP

dentro do código de sql2.sh as variáveis seriam utilizadas inicialmente com $1 e $2


@Miqueloti ambas propostas funcionam, porém acredito que da forma que está na dica fica melhor, pois está compartilhando as variáveis ao invés de ficar passando elas entre os arquivos. Assim a variável criada no script1.sh fica disponível de forma transparente para todos os outros scripts que estão compartilhando o mesmo sub-shell.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts