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
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
Logs do Squid de forma legível
Leitura recomendada
Iniciando Script com o Sistema - Configuração no Debian Wheezy
Arrays no BASH
Shell Script - Imprimindo nome da própria função em execução
Variável de numero inteiro ou float
Usando variáveis para alterar arquivos com sed, *grep e outros
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