Pular para o conteúdo

Shell script - If [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 14:17h

To com uma pequena dúvida. Estava montando um script com um menu com categorias de programas, e outro menu que está dentro de uma função que lista alguns programas. Porém depois que seleciona uma categoria no primeiro menu ele não chama a função e vai direto para o final do script.

-----------------------------------------------------------------------------------------------------------

rm -rf $temp

dialog --menu 'Escolha uma categoria: ' 0 0 0 '1' 'Segurança' '2' 'Jogos' 2>$temp


opc=$(cat $temp | tail -n 1)

if [$opc == "1"]; then // Tentei isso tb \\ if [$opc = 1]; then ...


security

else


dialog --title 'Finalizando' --infobox " \n 5 segundos..." 5 25
sleep 1


----------------------------------------------------------------------------------------

Não consegui entender o porque de não entrar na função depois.
O arquivo temporário está armazenando o valor 1 mas na hora de entrar no if ele não executa a função.
se alguém puder me ajudar ficaria grato.

Responder tópico

2. Re: Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 15:09h

Quando vc dá esse comando:

$ cat $temp | tail -n 1

Qual é o retorno?

3. Re: Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 15:11h

Outra coisa: tente isso tb:

temp=$(dialog --menu 'Escolha uma categoria: ' 0 0 0 '1' 'Segurança' '2' 'Jogos')

4. Re: Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 15:29h

O valor de retorno do comando cat $temp | tail -n 1 depende da escolha no menu

ele retorna 1 quando o user seleciona segurança e 2 se selecionar jogos

5. Re: Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 15:33h

Então tente debugar o seu script pra saber o q tá acontecendo:

# bash -x script.sh

6. Re: Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 17:03h

O problema está na maneira como a variável esta recebendo um valor.
Tente começar com algo tipo:


... 'Escolha uma opção: ....

read opc
if ($opc = 1) ou [$opc -eq 1] then
begin...

7. Re: Shell script - If [RESOLVIDO]

Enviado em 21/02/2010 - 18:32h

Para realizar comparações numéricas use os operadores

'-eq -ne -lt -le -gt -ge'

'==' e para comparar strings...

Deve haver um espaço aqui 'if [<espaço>$opc ...<espaço>]'

Siga a dica do amigo acima e rode seu script em modo debug, e veja onde você está errando.

Mais detalhes: man bash

8. Re: Shell script - If [RESOLVIDO]

Enviado em 22/02/2010 - 01:10h

Pessoal muito obrigado pela ajuda.

SMarcell, muito obrigado pela dica do <espaço> o problema era esse, mas não consigo entender o pq...

eu estava usando assim de início


if [$opc -eq 1];then

só que nao funcionava por isso troquei pelo == e tentei = tb

mas o problema era a falta do espaço mesmo.

vlw mesmo amigão, qualquer coisa estamos aí.

abraço galera vlw

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder