Shell script - If [RESOLVIDO]

1. Shell script - If [RESOLVIDO]

Ewerton Tiago
FIx3r

(usa Ubuntu)

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.


  


2. Re: Shell script - If [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Ewerton Tiago
FIx3r

(usa Ubuntu)

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]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Ricardo Cardoso
ricardo cardoso

(usa Debian)

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]

Sandro Marcell
SMarcell

(usa Slackware)

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]

Ewerton Tiago
FIx3r

(usa Ubuntu)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts