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
Usando login nome e sobrenome separados por ponto no Slackware 14.1 x86_64 e PDC Samba
SqStat com Squid 3.3.6 monitorando usuários
Slackware com kernel 3.10 - Erro com driver NVidia [Resolvido]
Como descobrir seu IP externo com cURL
Atualizando microcódigo de processadores AMD
Leitura recomendada
Truques para tratamento de variáveis em shell script
Trabalhando com parâmetros em Shell Script
Site para montar regras de iptables
Iniciando Script com o Sistema - Configuração no Debian Wheezy
Compilar programas com muitos parâmetros
Comentários
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
Mensagem
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
[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.
Mensagem
[quote]
[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[/quote]
@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
Enviar