Testar se valor da variável contem string [RESOLVIDO]

1. Testar se valor da variável contem string [RESOLVIDO]

Thiago Dias
thiago_dias

(usa CentOS)

Enviado em 22/11/2011 - 12:34h

Bom dia, estou com uma dúvida, preciso testar se o valor de uma variável contem o string '-'.Quero fazer um if testando se a variável tem a string '-' no seu valor, se tiver executa uma ação, se não executa outra.
Alguma ideia de que comando posso usar para fazer isso?
Abraços


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 22/11/2011 - 22:49h

Opa desculpa, postei errado mesmo ;-), tava no metrô, agora estou em casa e vi com mais calma seu problema, veja que dar pra fazer assim:


#!/bin/bash
#exemplo
VAR='guarda-roupa'

if echo "$VAR" | egrep '-' >/dev/null
then
echo 'achei o danado do hifem'
else
echo 'nada feito'
fi


Agora sim ;-)
Abraços

3. Re: Testar se valor da variável contem string [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 22/11/2011 - 12:57h

if echo "$variavel" | egrep '*\-*'


4. Re: Testar se valor da variável contem string [RESOLVIDO]

Thiago Dias
thiago_dias

(usa CentOS)

Enviado em 22/11/2011 - 13:58h

Se eu fizer assim:
if echo "$VARIAVEL" | egrep '*\-*'
then
Ação a ser executada
else
echo "Não existe"
fi

Não funciona pois sempre vai na primeira opção do if.
Segue um exemplo para ficar mais claro:

#!/bin/bash
dir="/home/usuario/teste/"

for i in `find $dir -name \*.txt`;do
cd $dir
VARIAVEL=$(echo ${i##/*/} | sed 's/.txt//g') #pega o nome do arquivo sem o .txt
if echo "$VARIAVEL" | egrep '*\-*'
then
Ação a ser executada
else
echo "Não existe"
fi

done


5. Re: Testar se valor da variável contem string [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/11/2011 - 14:34h

Um modo de testar:


#!/bin/bash

echo "$VARIAVEL" | egrep '*\-*' > /dev/null
if [ $? -ne 0 ]; then
echo "sim"
else
echo "nao"
fi


Voce pode colocar tudo dentro do if, so fiz assim pra ficar mais tranquilo de entender.


6. Re: Testar se valor da variável contem string [RESOLVIDO]

Thiago Dias
thiago_dias

(usa CentOS)

Enviado em 22/11/2011 - 15:09h

Marangon, o '$?' esta recebendo sempre o valor 0, então sempre cai na segunda opção do if, por isso sempre imprime não, mesmo o valor da variável tendo o string - . Eu nunca utilizei esta expressão '$?', você pode me explicar como ela funciona?



7. Re: Testar se valor da variável contem string [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/11/2011 - 15:36h

Entao eh a condicao que nao funciona pra voce, pois a variavel $? mostra 0 se o ultimo comando funcionou. Se for diferente de 0 eh porque o comando nao teve sucesso, no seu caso, o egrep nao achou nada em $VARIAVEL e retornou vazio.


8. Bruce Lee

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/11/2011 - 23:36h

Esse método é infalível, como Bruce Lee...


#!/bin/bash
# more http://sekysu.blogspot.com
#
# A variável
VAR=$1

# A mesma variável porém sem o "-", caso a conter
TVAR=$( echo $VAR | sed 's/-//g' )

# Se os comprimentos forem diferentes então:
if [ "${#VAR}" -ne "${#TVAR}" ]
then
echo 'Contem -'

else
# Caso contrário
echo 'Não contem -'

fi



Boa sorte!


9. Bruce Lee II

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/11/2011 - 23:50h


#!/bin/bash
# v0.1a
VL=$1
CLEAN=$( echo $VL | sed 's/[^-]//g' )

if [ "${#VL}" -ne "${#CLEAN}" ]
then
echo "Contem exatamente ${#CLEAN} -"
else
echo 'Não contem nenhum -'
fi




10. eu também!

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 22/11/2011 - 23:52h

as vezes eu exagero... rsrs segue minha contribuição na localização de string dentro de string rsrsrs


#!/bin/bash

string="pano-de-trato coca-cola pepis-cola"
echo "a string tem ${#string} caracteres "
cont=0
for((i=0;$i < ${#string}; i++)){
if [ "${string:$i:1}" == '-' ]; then
echo "'-' encontrado na posição $i da variavel"
cont=`expr $cont + 1`
fi
}
echo -e "\n a string '$string' tem $cont '-' "



11. RESOLVIDO

Thiago Dias
thiago_dias

(usa CentOS)

Enviado em 23/11/2011 - 12:55h

Obrigado a todos por me ajudar neste problema, testei a dica do rai3mb e funcionou perfeitamente, obrigado rai3mb.
Abraços


12. Me salvou

Taffarel
xikara

(usa Outra)

Enviado em 08/11/2014 - 08:58h

Essa sua rotina e muito boa.
Só estava achando comparação por lina por lina






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts