Pular para o conteúdo

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

Responder tópico
  • Denunciar
  • Indicar

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

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

Responder tópico

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

Melhor resposta

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]

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

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

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

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]

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]

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]

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

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

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!

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

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

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

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

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder