shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: [shell-script] Funções


From: Wagner Brasileiro Cardoso
Subject: RES: [shell-script] Funções
Date: Wed, 24 Jan 2007 09:45:21 -0300

Com mil perdões lista! Obrigado pela correção Júlio!
Inverti totalmente a situação, fui olhar agora no cartão de referência qual
era a definição resumida do comando e lá diz: "Executa comandos contidos em
um arquivo no ambiente de shell atual" Justamente o contrário do que disse.

Aproveitando e pegando carona, existe outra maneira de se fazer uma esécie
de #include sem ser pelo source? Neste caso ficou a dúvida se com o source
poderia se incluir um arquivo inteiro de funções ou se teria que ter cada
arquivo com funções separadamente, pois ele me pareceu tentar executar tudo
de uma vez. Já no include incorporaríamos no corpo do script e faríamso a
chamada qaundo necessário.

Obrigado,

Wagner Brasileiro
  -----Mensagem original-----
  De: address@hidden
[mailto:address@hidden]Em nome de Julio C. Neves
  Enviada em: terça-feira, 23 de janeiro de 2007 17:26
  Para: address@hidden
  Assunto: Re: [shell-script] Funções


  Epa Wagner,
  acho que vc se enganou um pouquinho qdo disse: "se sua função retorna
algum
  valor para
  o programa que a chamou terá que exportá-la para que seja visível pelo
  script que a chamou.".

  O Tiago disse: " Sim, quem faz isso é o comando source ou '.' ". Não sei
se
  entendi o que ele quis dizer e talvez diga a mesma coisa com outras
  palavras.

  Veja o script1.sh e o script2.sh, a seguir:

  $ cat script1.sh
  #!/bin/sh
  a=5
  b=9
  . ./script2.sh
  echo $a:$b

  $ cat script2.sh
  #!/bin/sh
  a="letra a"
  b="letra b"

  Ou seja, o script1.sh cria 2 variáveis e chama o script2.sh com o cmd
source
  (.) e depois imprime estas variáveis. O script2.sh somente altera o valor
  destas variáveis.

  Qdo executamos o script1.sh veja o que acontece:

  $ ./script1.sh
  letra a:letra b

  Isto é o script2.sh alterou as variáveis, ninguém exportou nenhuma
variável
  e o script1.sh viu as variáveis alteradas. Ou seja, o cmd source ou . é
  usado *justamente* para não fazer um fork do shell instanciando-o.

  Aqui tem tudo, em português, sobre o cmd

souce<http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo008#O_com
ando_source>

  Abração,
  Julio
  :wq

  Em 23/01/07, Wagner Brasileiro Cardoso
<address@hidden>
  escreveu:
  >
  > Não esquecendo que o comando source vai rodar uma instância separada do
  > bash
  > ou do seu interpretador de comandos e se sua função retorna algum valor
  > para
  > o programa que a chamou terá que exportá-la para que seja visível pelo
  > script que a chamou.
  >
  > Um abraço,
  >
  > Wagner Brasileiro
  >
  > -----Mensagem original-----
  > De: address@hidden <shell-script%40yahoogrupos.com.br>
  >
[mailto:address@hidden<shell-script%40yahoogrupos.com.br>]E
m
  > nome de Tiago Barcellos Peczenyj
  > Enviada em: terça-feira, 23 de janeiro de 2007 14:29
  > Para: address@hidden
<shell-script%40yahoogrupos.com.br>
  > Assunto: Re: [shell-script] Funções
  >
  > Sim, quem faz isso é o comando source ou '.'
  >
  > #!/bin/bash
  > . arquivo_com_funcoes.sh
  > ...
  >
  > []´s Tiago
  >
  > On 1/23/07, Diogo Júnior
<address@hidden<diogojunior2002%40yahoo.com.br>>
  > wrote:
  > >
  > > Olá pessoal!
  > >
  > > Gostaria de saber se eu posso criar um arquivo contendo algumas
funções
  > > feitas por mim, e depois importar esse arquivo em futuros scripts que
eu
  > > venha a fazer?
  > > Eu já faço isso com python, mas gostaria de poder fazer também com
shell
  > > script.
  > >
  > > Desde já agradeço.
  > >
  > > Diogo Bonfim Pereira Junior
  > > Graduando em Ciências da Computação
  > > __________________________________________________
  > > Fale com seus amigos de graça com o novo Yahoo! Messenger
  > > http://br.messenger.yahoo.com/
  > >
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > >
  > >
  >
  > --
  > Tiago B Peczenyj
  > Linux User #405772
  >
  > # cd /pub
  > # more beer
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  >
  >

  [As partes desta mensagem que não continham texto foram removidas]



  


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]