Como compara com uma string

1. Como compara com uma string

francisco
franciscomoura

(usa Gentoo)

Enviado em 28/03/2008 - 10:12h

Olá pessoal,

gostaria de comparar um único parâmetro de entrada com uma string, e fiz dessa maneira :

# Verifica o parametro de entrada
if [ $# -ne 1 ] || [$1 != 'UNI'] || [$1 != 'UNI2']
then
echo "Erro de parametro"
echo " 1 - Precisa passar o parametro. Exemplo: UNI ou UNI2"
exit 1
fi

echo "Deu certo"





Está correto?


  


2. Re: Como compara com uma string

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 28/03/2008 - 10:48h

Não

O correto seria

#!/bin/sh

# Verifica o parametro de entrada
if [ $# -ne 1 ] || ( [ $1 != UNI1 ] && [ $1 != UNI2 ] ); then
echo "Erro de parametro"
echo " 1 - Precisa passar o parametro. Exemplo: UNI1 ou UNI2"
exit 1
fi

echo "Deu certo"


3. Re: Como compara com uma string

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 28/03/2008 - 10:56h

O seu [$1 != 'UNI'] está errado, pois assim ele tentará executar $1 como se fosse um comando. Para que não execute tem que ter espaço [ $1 != 'UNI' ]

O [ $# -ne 1 ] || [$1 != 'UNI'] || [$1 != 'UNI2'] está errado, pois se digitado como Parâmetro, UNI por exemplo, ele seria diferente de UNI2 e entraria no IF, o que você não quer, pois ficaria:
[falso] ou [falso] ou [Verdade] = Verdade



4. Re: Como compara com uma string

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 28/03/2008 - 10:58h

Só um detalhe que esqueci. Modifiquei o THEN, mas isso não faz diferença, é que acabei alterando da forma que estou acostumado, mas estava correto da outra forma tb. O mesmo aconteceu com as palavras UNI e UNI2. Modifiquei, mas estava correto. É que tanto faz neste caso por "UNI", 'UNI' ou UNI.


5. Deu certo

francisco
franciscomoura

(usa Gentoo)

Enviado em 28/03/2008 - 11:15h

Obrigado grj_rj, entendi sua explicaçãoe vc tem razão.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts