testar variável [RESOLVIDO]

1. testar variável [RESOLVIDO]

diêgo
soldadolinux

(usa Linux Mint)

Enviado em 02/10/2011 - 13:14h

Olá pessoal como eu faço para testar variável "$z" para se ela conter o valor 01 02 ou 03 ela execute comandos diferentes vejam.

#/bin/bash
z=$( dialog --stdout --separate-output \
--title 'ESCOLHA O QUE VC QUER FAZER' \
--checklist 'escolha:' 0 0 0 \
01 'entrar em /etc/rc.d' off \
02 'entrar em /etc/rc.init.d' off \
03 'entrar em /etc/keyboard' off )
echo "resultado: $z"

os comandos são esses
cd /etc/rc.d ; ls
cd /etc/rc.init.d ; ls
cd /etc/keyboard ; ls


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/10/2011 - 20:29h

Desculpa ae ;-)

pensei que dava certo escrever a função assim:
funcao() { comandos }


#!/bin/bash
z=$( dialog --stdout --separate-output \
--title 'ESCOLHA O QUE VC QUER FAZER' \
--checklist 'escolha:' 0 0 0 \
01 'entrar em /etc/rc.d' off \
02 'entrar em /etc/rc.init.d' off \
03 'entrar em /etc/keyboard' off )

z=$(echo -n "$z" | tr '\n' ' ')

f01() {
cd /etc/rc.d ; ls
}
f02() {
cd /etc/rc.init.d ; ls
}
f03() {
cd /etc/keyboard ; ls
}

case "$z" in
'01') f01 ;;
'02') f02 ;;
'03') f03 ;;
'01 02') f01 ; f02 ;;
'01 03') f01 ; f03 ;;
'02 03') f02 ; f03 ;;
'01 02 03') f01 ; f02 ; f03 ;;
esac


Agora deu certo, veja que troquei os \n (quebra de linha) por espaço em branco da variável z

Abraços

3. Re: testar variável [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/10/2011 - 16:19h

usa if ou case


case "$z" in
'01') cd /etc/rc.d ; ls ;;
'02') cd /etc/rc.init.d ; ls ;;
'03') cd /etc/keyboard ; ls ;;
esac


Abraços


4. Re: testar variável [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 02/10/2011 - 17:00h

Acho o case mais elegante nesses casos. :)


5. testar variável

diêgo
soldadolinux

(usa Linux Mint)

Enviado em 02/10/2011 - 18:46h

Certo mais com o case ele só executa uma opção se eu marcar duas as duas opções não são executadas como resolvo isso?


6. Re: testar variável [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/10/2011 - 19:41h

se ele marca 2 opções o $z fica : 01 02 ou 01 03 ou ainda 02 03
Ou 3 opções : 01 02 03


func01() { cd /etc/rc.d ; ls }
func02() { cd /etc/rc.init.d ; ls }
func03() { cd /etc/keyboard ; ls }

case "$z" in
'01') func01 ;;
'02') func02 ;;
'03') func03 ;;
'01 02') func01 ; func02 ;;
'01 03') func01 ; func03 ;;
'02 03') func02 ; func03 ;;
'01 02 03') func01 ; func02 ; func03 ;;
esac


É uma opção.


7. testar variável

diêgo
soldadolinux

(usa Linux Mint)

Enviado em 02/10/2011 - 20:07h

Eu testei aqui marcando as três opções e mostrou esse erro
line 23: syntax error: unexpected end of file (expecting "}")


8. Re: testar variável [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/10/2011 - 20:09h

Então:
end of file (expecting "}")

Tá faltando fechar algum bloco com '}'

Avalie seu código e faça a devida correção ou poste ele completo, mas o erro é simples, basta ver um bloco iniciado com { que faltou fechar }

Abraços


9. testar variável

diêgo
soldadolinux

(usa Linux Mint)

Enviado em 02/10/2011 - 20:13h

Eu não estou vendo nenhum erro olha ele aqui

#/bin/bash
z=$( dialog --stdout --separate-output \
--title 'ESCOLHA O QUE VC QUER FAZER' \
--checklist 'escolha:' 0 0 0 \
01 'entrar em /etc/rc.d' off \
02 'entrar em /etc/init.d' off \
03 'entrar em /etc/keyboard' off )
echo "resultado: $z"

f01() { cd /etc/rc.d ; ls }
f02() { cd /etc/init.d ; ls }
f03() { cd /etc/keyboard ; ls }

case "$z" in
'01') f01 ;;
'02') f02 ;;
'03') f03 ;;
'01 02') f01 ; f02 ;;
'01 03') f01 ; f03 ;;
'02 03') f02 ; f03 ;;
'01 02 03') f01 ; f02 ; f03 ;;
esac



10. testar variável

diêgo
soldadolinux

(usa Linux Mint)

Enviado em 02/10/2011 - 20:41h

Consegui muito obrigado pela ajuda estou a dias tentando resolver esse problema vlw mesmo :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts