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

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

Re: [shell-script] Re: Erro com variaveis!


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Re: Erro com variaveis!
Date: Mon, 15 Jan 2007 09:13:23 -0200

Ola

eu criei uma função aconnect que faz o seguinte:
--
   aconnect(){ echo "aconnect ${*}" ; }
--
alem disso eu imprimo o caracter digitado

$./script.sh
aconnect Midi FLUID
Vc digitou ';'
aconnect Midi FLU
aconnect Midi FLUID -d # FLUID é o dest anterior, certo?
Vc digitou '.'
aconnect Midi Zyn
aconnect Midi FLU -d # agora tem que ser o FLU, certo?
Vc digitou ','
aconnect Midi bris
aconnect Midi Zyn -d # agora tem que ser o Zyn, certo?
Vc digitou ';'
aconnect Midi FLU
aconnect Midi bris -d # agora tem que ser o bris, certo?
Vc digitou '.'
aconnect Midi Zyn
aconnect Midi FLU -d #FLU again...
Vc digitou ','
aconnect Midi bris
aconnect Midi Zyn -d # Zyn again...

Me parece que o comportamento do script está correto.

On 1/14/07, Benedito Portela <address@hidden> wrote:


O problema não esta na variavel do case, mas na outra variavel que era
 pra ser a referencia do que esta conectado antes pra que possa ser
 deconectado pelas opções da variavel $sel !
 Esse script é só o começo, o que quero fazer é mais complexo, mas não
 tão dificil! Vai de fazer e desfazer conexões do alsa/jack entre
 programas e perifericos até envio de messagem em Hex pelo comando
 amidi, por isso eu perguntei, em outro topico, como se converte de
 decimal pra Hexdecimal! Bom se fosse Basic eu tiraria isso tudo de
 letra, será que tem alguma linguagem Basic pra linux? Assim eu
 deserolaria mais rapido! Mesmo assim já estou envolvido com comando do
 shell então prefiro aprede-lo! Creio que será muito util para mim e em
 qualquer projeto futuro!
 Bené

 --- Em address@hidden, "Tiago Barcellos Peczenyj"
 <tiago.peczenyj@...> escreveu

 >
 > Ola
 > faça alguns testes, troque o seu read , case... esac por:
 >
 >  read -sn1 sel
 >
 >  case "${sel}" in
 >
 >  ";" ) echo 1 ; dest='FLU' ;;
 >
 >  "." ) echo 2 ; dest='Zyn' ;;
 >
 >  "," ) echo 3 ; dest='bris';;
 >
 > *) echo "nenhum desses!" ;;
 >  esac
 >
 > Em shell é possivel definir funções no formato
 >
 > nome_da_funcao(){
 >   comando 1
 >   comando 2
 >   ...
 >   comando N
 > }
 >
 > vc pode declarar variaveis dentro e fora das funções, entretanto se vc
 > quer que ela seja local, deve informar isso na forma
 >
 > local VARIAVEL
 >
 >
 > Suas funções podem ser parametrizadas, nesse caso os parametros são
 > lidos atraves das variaveis $1 .. $9 , $* $@ e $# conforme o artigo
 > que escrevi abaixo:
 >
 > http://centosbr.org/modules/smartsection/item.php?itemid=108
 >
 > (Alias estou devendo outros artigos, enfim, sou brasileiro e não
 desisto nunca)
 >
 > Seu script é pequeno, não vejo por que criar uma função alem de
 > exercitar este conceito. Vc precisa investigar o funcionamento do
 > mesmo para entender por que não está funcionando como vc gostaria.
 >
 > Por fim, tente usar a opção de debug do shell com set +x
 >
 > []´s Tiago
 >

 > On 1/14/07, Benedito Portela <benep2@...> wrote:
 > >
 > >
 > > Pessoal estou fazendo um script e não estou sabendo como resolver um
 > > problema com variaveis! Talvez seja um erro bobô, pois shell parece
 > > com outras linguagens mas tem varias particularidades! Bom o problema
 > > é esse:Fiz um loop como While : do e com três variaveis, melhor que
 > > esplicar é mostrar:
 > >
 > > #!/bin/bash
 > >
 > > #Programa de Controle
 > >
 > >
 > > dest='FLUID'
 > > dest_ant='FLUID'
 > >
 > > aconnect Midi $dest
 > >
 > > while :
 > >
 > > do
 > >
 > > read -sn1 sel
 > >
 > > case $sel in
 > >
 > > ";" ) dest='FLU' ;;
 > >
 > > "." ) dest='Zyn' ;;
 > >
 > > "," ) dest='bris';;
 > >
 > > esac
 > >
 > > aconnect Midi $dest
 > >
 > > aconnect Midi $dest_ant -d
 > > dest_ant=$dest
 > > done
 > >
 > > O problema é que depois que eu faço o "dest_ant=$dest" as duas
 > > variaveis ficam sempre iguais! Começa o loop denovo e aperto a tecla a
 > > $dest ganha outro valor e automaticamente a $dest_ant tb! No basic
 > > isso funcionaria como eu queria, mas aqui eu não sei qual é logica!
 > > Outra coisa, como se faz sub-rotinas tipo como no basic o gosub ou até
 > > mesmo o go to ?
 > > Obg
 > > Bené
 > >
 > >
 >
 >
 >
 > --
 > Tiago B Peczenyj
 > Linux User #405772
 >
 > # cd /pub
 > # more beer
 >






--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

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