duvida shell script basico [RESOLVIDO]

1. duvida shell script basico [RESOLVIDO]

fabiano meireles dos santos
fabiano_meireles

(usa Outra)

Enviado em 21/08/2008 - 16:12h

gostaria de saber pq este codigo nao funciona, eu fiz apenas para testar mas nao esta rolando.
#!/bin/bash -vx
int=`ifconfig eth0 | grep UP`
if [ -z $int ]; then
echo "Interface ja esta ativa"
else
echo "Interface nao Ativada"
fi

o resultado no shell com o modo debug

#!/bin/bash -vx
status=`ifconfig eth0 | grep UP`
ifconfig eth0 | grep UP
++ ifconfig eth0
++ grep UP
+ status=' UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1'
if [ -z $status ]; then
echo "Interface ja esta ativa"
else
echo "Interface nao Ativada"
fi
+ '[' -z UP BROADCAST RUNNING MULTICAST MTU:1500 $'M\303\251trica:1' ']'
./teste_up.sh: line 3: [: muitos argumentos
+ echo 'Interface nao Ativada'
Interface nao Ativada

teria que dar ativada esta up a eth0


  


2. MELHOR RESPOSTA

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 21/08/2008 - 20:14h

2 coisas estão erradas.

1) [ -z $var ] só funciona se não houver espaço em branco na string, caso contrário ele irá tratar como se fossem argumentos. No caso de string com espaço em branco você deve usar entre aspas. [ -z "$var" ]

2) -z retorna verdade se a string tiver comprimento 0 ou seja, suas mensagens estão invertidas. Ou usa -n ou inverte as mensagens:

if [ -n "$int" ]; then
echo "Interface ja esta ativa"
else
echo "Interface nao Ativada"
fi

ou

if [ -z "$int" ]; then
echo "Interface nao Ativada"
else
echo "Interface ja esta ativa"
fi


3. Re: duvida shell script basico [RESOLVIDO]

fabiano meireles dos santos
fabiano_meireles

(usa Outra)

Enviado em 22/08/2008 - 07:58h

Muito obrigado ae agora me esclareceu algumas coisas meio bobas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts