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

Publicado por krum em 16/10/2015

[ Hits: 5.412 ]

 


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

Logs do Squid de forma legível

SqStat com Squid 3.3.6 monitorando usuários

Slackware e BIND - Corrigindo erro em chroot após upgrade

Corrigir Heartbleed OpenSSL no Slackware

Como descobrir seu IP externo com cURL

Leitura recomendada

Variáveis compostas em shell script

Atendimento ou suporte remoto em estações de trabalho via VNC

Nome de arquivo com espaço dentro de variáveis

Números aleatórios em shell script

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

  

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