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 <[EMAIL PROTECTED]> 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

Responder a