AprendiNoLinux
(usa Ubuntu)
Enviado em 06/08/2011 - 11:05h
Olá @rai3mb , @ronin :)
Ok. Entendi bem claro agora a questão do source ou o espaço .(ponto) meuscript. Tanto um quanto outro passam a fazer parte do mesmo script. Não sabia que ele era uma forma de atalho para chamar outros scripts como foi mostrado no caso do eval.
Continuo na dúvida como e quando sou obrigado a usar o eval rsrs. Em que condições ele é obrigatório. Até onde estou lendo, nunca é recomendado usar o eval.
Sobre a integração com PHP é um outro assunto que interessa muito. Passar parâmetros do PHP para SHELL SCRIPT e vice versa. Acho que este assunto pode ficar para outra dúvida na comunidade.
Sobre a questão do escopo das variáveis, eu entendi que se eu tenho as variáveis já criadas antes de chamar via source o próximo script, ao entrar nele, elas continuam valendo.
Sobre o export NOME_DA_VARIÁVEL , ainda não usei. Já li a respeito e me parece que serve para conseguir passar os valores ao próximo SHELL SCRIPT chamado na forma VARIAVEL=$(./nome_script.sh) e lá dentro elas ainda continuarão valendo. Não sei como funciona na prática. Vou testar.
A minha necessidade em variáveis exportadas é fazer o contrário. Conseguir alterar a variável dentro de outro SHELL SCRIPT e receber o valor alterado de volta.
Até agora não consegui receber o retorno alterado. Também não usei o export rsrs.
Dúvida: Variáveis GLOBAIS devem ser só no 1° SHELL SCRIPT ? Ou podem ser feitas nos secundários ? Se sim, qual a forma correta ?
Retorno de SHELL SCRIPT secundário.
Para retornar valor de um SHELL SCRIPT secundário a última linha tem sempre que ser conforme abaixo ?
$ echo $VALOR_RETORNO
E se eu preciso de vários retornos e não apenas 1 ? O retorno pode ser array ? (Ainda nem usei , mas em php pode.)
Percebi que colocar as funções no início do script fica ruim para acompanhar.
Estou separando tudo em funções, desde que tenham a possibilidade de se repetir, exemplo:
MsgProg.sh - Lá estou colocando todas as mensagens que o script irá enviar na tela e que de alguma forma podem ser repetidas em outros locais do Script.
Dentro tem um função _HelpProg() que irá receber 1 parâmetro. Ele irá indicar qual é a mensagem a ser mostrada na tela.
Estou fazendo desta forma para entender como funcionam as passagens de parâmetros e os retornos. Só está funcionando bem se eu coloco a chamada como source.
Após declarar todas as variáveis necessárias, faço uma chamada ao source MsgProg.sh sem nenhum parâmetro.
No local onde eu preciso, faço a referência a função que existe no MsgProg.sh da seguinte forma: _HelpProg 0
Está correto fazer dessa forma ? Existe uma forma melhor ?
Percebi como já foi citado, que usando o source o arquivo carregado nem precisa de permissão de execução. É verdade mesmo rsrs, nem tinha dado permissão para estes outros arquivos e estavam funcionando. Aprendi mais uma, que perigo.
Pelo que pude entender, não posso usar variáveis na linha do source por questões de segurança. Um variável maliciosa poderia fazer a execução de algum comando não esperado.
Sobre as variáveis dentro das funções.
======================================
Todas as variáveis criadas até o momento dentro de funções estou deixando como local.
Falta entender melhor quando eu precisar alterar um valor já existente e devolver este retorno a quem chamou alterado.
Obrigado novamente ao @rai3mb e @ronin por ajudar com as dúvidas.
GA
ps: Tenho a péssima mania de escrever todo o texto aqui e tentar enviar e já expirou a geripoca rsrs. Já perdi vários textos. Tô salvando antes de enviar para não perder.