Variáveis

1. Variáveis

Marcos Vinícius Dunguel Nunes
mdunguel

(usa Debian)

Enviado em 18/03/2019 - 09:19h

Bom dia.
Galera estou precisando saber como eu faço para criar uma variável que fique armazenada na memória e que possa ser despois acessada por diversos e diferentes scripts.
Um exemplo:
Um determinado endereço IP para ser carregado em diversos scripts diferentes que venham a fazer uso dele.


  


2. Re: Variáveis

Slackjeff
slackjeff

(usa Slackware)

Enviado em 18/03/2019 - 11:24h

Faça uma variável de ambiente!

*Se caso você use o bash e for somente para seu usuário você pode por em seu bashrc que está localizado em seu HOME, se caso não ter o crie!
export meu_ip="127.0.0.1" 



*Se caso a variável precisa ficar visivel para TODOS usuários, vc pode por no profile em /etc/profile use o export na frente da variável, para exportar para todos processos e subprocessos exemplo:
export meu_ip="127.0.0.1" 


Para fazer listagem das suas variáveis de ambiente você pode usar o comando printenv ou env
Dê uma lida:
https://pt.wikibooks.org/wiki/Guia_do_Linux/Iniciante%2BIntermedi%C3%A1rio/Personaliza%C3%A7%C3%A3o_...

I'M ROOT!

Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff

Meu Site:
https://www.slackjeff.com.br/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha

E aqui:
https://github.com/slackjeff/







3. Exemplo de shell

Marcos Vinícius Dunguel Nunes
mdunguel

(usa Debian)

Enviado em 19/03/2019 - 15:58h

Obrigado pelo retorno.
Vou passar minha ideia através de um Shell script .
Primeiro crio um script com este conteúdo:

------Script 01-------
!#/bin/bash
echo "Entre com o endereço IP do seu servidor:"
read IP
echo "Entre com o domínio em caixa baixa:"
read DOMAIN
echo "Entre com o nome da máquina:"
read NICNAME
FQDN=NICNAME+DOMAIN

Após a entrada dos dados, as variáveis acima criadas precisam ser recuperadas pelo próximo script:

-------Script 02---------
!#/bin/bash
echo "Seu IP é "$IP" !"
echo "Seu NICNAME é "$NICNAME" !"
echo "Seu DOMAIN é "$DOMAIN" !"
echo "Seu FQDN é "$FQDN" !"

Estes exemplos são os mais simples que eu escrevi, apenas para demonstração do que pretendo fazer.
Deste modelo farei outros mais complexos.
Mas as variáveis precisam estar disponíveis para serem utilizadas por todo e qualquer script futuro.



4. Re: Variáveis

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/03/2019 - 19:35h

mdunguel escreveu:

Obrigado pelo retorno.
Vou passar minha ideia através de um Shell script .
Primeiro crio um script com este conteúdo:

------Script 01-------
!#/bin/bash
echo "Entre com o endereço IP do seu servidor:"
read IP
echo "Entre com o domínio em caixa baixa:"
read DOMAIN
echo "Entre com o nome da máquina:"
read NICNAME
FQDN=NICNAME+DOMAIN

Após a entrada dos dados, as variáveis acima criadas precisam ser recuperadas pelo próximo script:

-------Script 02---------
!#/bin/bash
echo "Seu IP é "$IP" !"
echo "Seu NICNAME é "$NICNAME" !"
echo "Seu DOMAIN é "$DOMAIN" !"
echo "Seu FQDN é "$FQDN" !"

Estes exemplos são os mais simples que eu escrevi, apenas para demonstração do que pretendo fazer.
Deste modelo farei outros mais complexos.
Mas as variáveis precisam estar disponíveis para serem utilizadas por todo e qualquer script futuro.


Boa noite mdunguel.
Para simplificar e evitar ERROS, tipo, usuário colocar as informações erradas,
Faça o script buscar as informações.
Sugestão:
#!/bin/bash
echo -e "Endereço IP: $(hostname -I)\nDomínio: $(cut -d. -f2-3 <<< $HOSTNAME)\nNome máquina: $(cut -d. -f1 <<< $HOSTNAME)" 

Obs.: Se $(hostname -I) pegar ipv4 e ipv6, faça:
$(hostname -I|cut -d " " -f1) 


No seu script está:
!#/bin/bash
O correto é:
#!/bin/bash

VEJA => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


5. Re: Variáveis

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/03/2019 - 20:32h

A técnica mais comum para compartilhar variáveis entre múltiplos scripts é ter um arquivo apenas com as definições das variáveis, e fazer cada um dos scripts que usa tais variáveis invocar o arquivo que contém sua definição, através do comando . (ponto; alguns shells aceitam o comando alternativo source). Por exemplo, você poderia ter um arquivo chamado my_variables.conf e dois scripts que incluíssem esse arquivo.
# /usr/local/etc/my_variables.conf
name="Paulo"
age=44
#!/bin/sh
# scriptt1.sh
. /usr/local/etc/my_variables.conf
echo "$name" # Vai imprimir “Paulo”.
# ...
#!/bin/sh
# script2.sh
. /usr/local/etc/my_variables.conf
echo "$age" # Vai imprimir “44”.
# ...


O comando . faz com que o arquivo especificado seja interpretado como uma sequência de comandos do mesmo processo do shell que está executando o script. Assim sendo, essas definições de variáveis vão provocar o mesmo comportamento que teriam se o arquivo tivesse literalmente sido copiado para dentro de cada script.

Note que eu usei variáveis comuns, não variáveis de ambiente, que seriam definidas/exportadas com o comando export. Em muitos contextos, pode não ser interessante propagar algumas variáveis de ambiente para dentro dos processos filhos invocados pelo shell (que é o comportamento padrão quando você roda qualquer comando). E você ainda fica um pouco mais imune a possíveis erros que existiriam se o usuário eventualmente alterasse ou apagasse uma variável de ambiente que lhe fosse forçada na hora do login.

Outro efeito de o arquivo incluído ser considerado como um conjunto de comandos do shell que o inclui é que você não é limitado apenas a definições de variáveis, mas pode usar qualquer construção válida no shell. Desse modo, você poderia até optar por permitir que o usuário do script use outros valores para as variáveis. Por exemplo, suponha que nosso arquivo my_variables.conf fosse alterado para o seguinte.
[ -z "$name" ] && name="Paulo"
[ -z "$age" ] && age=44

Se eu então fizer uma predefinição (agora, sim, com variável de ambiente) da variável nome, antes de invocar o script1.sh, o valor da variável será o que eu predefinir.
$ ./script1.sh 
Paulo
$ name="Fulano" ./script1.sh
Fulano



... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts