Primeira esta contida na segunda [RESOLVIDO]

1. Primeira esta contida na segunda [RESOLVIDO]

Nerd Leigo
NERDS LEIGO

(usa Ubuntu)

Enviado em 19/09/2011 - 16:15h

alguém me da uma luz de como fazer um script desse jeito que não tenho nem ideia!

*receber duas palavras como parâmetro interativamente e verifica se a
primeira está contida dentro da segunda. Em caso de sucesso mostre
mensagem afirmativa e em caso de falha mostre mensagem de falha.
Ao digitar sair o script deverá encerrar

desde de ja agradeço a todos!

abraços


  


2. MELHOR RESPOSTA

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 19/09/2011 - 18:27h

Poderia usar um grep também.


#!/bin/bash
# Editado pelo moderador ./.ronin em 2011-09-22

echo $1 | grep $2
if [ $? = 0 ]; then
echo 'contida'
else
echo 'nao contida'
fi



PS: O moderador "./.ronin" marcou esta resposta como a melhor por ser a mais objetiva e rápida, apesar das demais também resolverem o tópico de uma forma mais extensa.


3. Re: Primeira esta contida na segunda [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/09/2011 - 17:24h

Veja as estruturas deste script. Perceba que embora ele esteja funcional ainda não foram cobridas - propositalmente - algumas falhas como o que aconteceria se o usuário deixasse de digitar algumas das palavras: essa "feature" deixo para o Sr.
Boa sorte!



#!/bin/bash
# package: Helps do Vol
# file: compara_palavras.sh
# Compara duas palavras digitadas interativamente pelo usuário.
#
# since: 2011-09-19 (GMT -03:00)
# version: 1.0
# author: Paulo Riceli Dias Lelis
#
# charset: UTF-8
# end line: Linux
# more: http://sekysu.blogspot.com
# license: GPL v2.0
#

function _getDif()
{
echo $1 | grep $2 && return 0 || return 2
}

echo 'Seja bem vindo ao programa para comparar duas palavras.
Por favor...'
read -p 'Digite a PRIMEIRA palavra: ' PRIMEIRA
read -p 'E agora digite a SEGUNDA palavra: ' SEGUNDA

RST=$( _getDif "${PRIMEIRA}" "${SEGUNDA}" )

if [ $? -eq 0 ]
then
echo "$PRIMEIRA esta continda em $SEGUNDA"
else
echo "$PRIMEIRA NAO esta continda em $SEGUNDA"
fi

exit



4. Re: Primeira esta contida na segunda [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 19/09/2011 - 18:39h

As 2 respostas estão corretíssimas, mas segue outra mais simples:


#!/bin/bash
# Editado por ./.ronin 2011-09-22
echo 'palavra_1' | grep 'palavra_2' && echo 'CONTEM' || echo 'NAO CONTEM'

E viva o gde numero de possibilidade do universo shell!!


5. Re: Primeira esta contida na segunda [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/09/2011 - 19:37h


Adicionadas algumas features para tornar o script mais interativo e livra-lo de falhas não cobridas. - refatoração de código
Note o emprego de recursividade: um procedimento chamou ele próprio.



#!/bin/bash
# package: Help VOL
#
# file: compara_textos.sh
# Compara duas palavras ou frases de forma interativa.
#
# version: 1.1b
#
# since: 2011-00-19 ( GMT -03:00 )
# version: 1.0
#
# charset: UTF-8
# end line: Linux
# more:
# license: GPL v2.0
#
# Tested on system: Linux Slackware 12.2 Kernel 2.6.27.7-smp

MSG[0]='Seja bem vindo ao programa para comparar duas palavras.Por favor...
'
MSG[1]='Digite a PRIMEIRA PALAVRA: '
MSG[2]='E agora digite a SEGUNDA PALAVRA: '
MSG[3]='ESTA CONTIDA EM'
MSG[4]='NAO ESTA CONTIDA EM'
MSG[5]='Deseja continuar a comparar outras duas palavras [s/N]? '

MSG_ERR[0]='Por favor, DIGITE AS DUAS PALAVRAS para as comparar.'


function _getDf()
{
echo "$1" | grep "$2" && return 0 || return 2
}

function _continuar()
{
read -n 1 -p "${MSG[5]}" OP
case $OP in
's') _main;;
'N') echo -e "\nSaindo conforme solicitado\n";
exit;;
*) _continuar;;
esac
}

function _main()
{
echo ${MSG[0]}
read -p "${MSG[1]}" PRIMEIRA
read -p "${MSG[2]}" SEGUNDA

if [ ${#PRIMEIRA} -gt 0 ] && [ ${#SEGUNDA} -gt 0 ]
then
DF=$( _getDf "${SEGUNDA}" "${PRIMEIRA}" )
if [ $? -eq 0 ]
then
echo -e "\n\"$PRIMEIRA\"\n${MSG[3]}\n\"$SEGUNDA\"\n"
else
echo -e "\n\"$PRIMEIRA\"\n${MSG[4]}\n\"$SEGUNDA\"\n"
fi
else
echo -e "\nERROR: ${MSG_ERR[0]}\n"
fi
_continuar
}
_main
exit



6. brigado gente esclareceu minhas duvidas'

Nerd Leigo
nerds leigo

(usa Ubuntu)

Enviado em 19/09/2011 - 22:47h

Muito obrigado gente! Minhas duvidas foram esclarecidas! Muito obrigado mesmo!
Até mais!


7. Re: Primeira esta contida na segunda [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/09/2011 - 22:55h

nerds leigo escreveu:

Muito obrigado gente minhas duvidas foram esclarecidas muito obrigado mesmo. ate mas!


Não se esqueça de marcar o tópico como resolvido e marcar a melhor resposta ;)


8. Re: Primeira esta contida na segunda [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 19/09/2011 - 22:56h

./.ronin escreveu:


Adicionadas algumas features para tornar o script mais interativo e livra-lo de falhas não cobridas. - refatoração de código
Note o emprego de recursividade: um procedimento chamou ele próprio.



Testando códigos.


#!/bin/bash
# package: Help VOL
#
# file: compara_textos.sh
# Compara duas palavras ou frases de forma interativa.
#
# version: 1.1b
#
# since: 2011-00-19 ( GMT -03:00 )
# version: 1.0
#
# charset: UTF-8
# end line: Linux
# more:
# license: GPL v2.0
#
# Tested on system: Linux Slackware 12.2 Kernel 2.6.27.7-smp

MSG[0]='
Seja bem vindo ao programa para comparar duas palavras.
Por favor...
'
MSG[1]='Digite a PRIMEIRA PALAVRA: '
MSG[2]='E agora digite a SEGUNDA PALAVRA: '
MSG[3]='ESTA CONTIDA EM'
MSG[4]='NAO ESTA CONTIDA EM'
MSG[5]='Deseja continuar a comparar outras duas palavras [s/N]? '

MSG_ERR[0]='Por favor, DIGITE AS DUAS PALAVRAS para as comparar'


function _getDf()
{
echo "$1" | grep "$2" && return 0 || return 2
}

function _continuar()
{
read -n 1 -p "${MSG[5]}" OP
case $OP in
's') _main;;
'N') echo -e "\nSaindo conforme solicitado\n";
exit;;
*) _continuar;;
esac
}

echo ${MSG[0]}
read -p "${MSG[1]}" PRIMEIRA
read -p "${MSG[2]}" SEGUNDA

if [ ${#PRIMEIRA} -gt 0 ] && [ ${#SEGUNDA} -gt 0 ]
then
DF=$( _getDf "${SEGUNDA}" "${PRIMEIRA}" )
if [ $? -eq 0 ]
then
echo -e "\n\"$PRIMEIRA\"\n${MSG[3]}\n\"$SEGUNDA\"\n"
else
echo -e "\n\"$PRIMEIRA\"\n${MSG[4]}\n\"$SEGUNDA\"\n"
fi
else
echo -e "\nERROR: ${MSG_ERR[0]}\n"
fi
_continuar

exit

#eof







9. Nao esta Marcando

Nerd Leigo
nerds leigo

(usa Ubuntu)

Enviado em 19/09/2011 - 22:59h

gente nao esta marcando como resolvido esse topico e nao quer marcar a melhor rsposta o que faço pois nao aparece os comando para eu executar coisa que os topicos anteriores aparecera?


10. eu também! errsrs

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 20/09/2011 - 00:43h

decha eu responder também pô!! rsrs
todo mundo se divertindo e eu de fora rsrsrs segue minha contribuição rsrsr

@AprendiNoLinux ve oq vc acha rsrsrs...


falowww

segue o código:

#!/bin/bash
clear
echo -ne "digite a palavra A # "
read A
clear
echo "palavara \"A\" = $A"
echo -ne "digite a palavra B # "
read B
clear

if [ ${#A} -gt ${#B} ]; then
echo " Impossivel Palavra A estar comtida em B pois A eh maior que B"
else
cont=0
for ((i=0; i<=$((${#B} - ${#A}));i++)); do
echo "palavara \"A\" = $A"
echo "palavara \"B\" = $B"
echo "Rastreando a lavra"
echo -e "${B:0:$i}\e[31m${B:$i:${#A}}\e[0m${B:$((i + ${#A})):${#B}}"
echo ${B:$i:${#A}}
if [ "${B:$i:${#A}}" = "$A" ]; then
cont=$(($cont + 1))
fi
sleep .1
clear
done
fi

echo " A palavra $A esta contida $cont vezes em $B"

#eof



11. Re: Primeira esta contida na segunda [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 20/09/2011 - 01:16h

nerds leigo escreveu:

Muito obrigado gente minhas duvidas foram esclarecidas muito obrigado mesmo. ate mas!


Isso ocorre porque quando você criou o tópico, havia se logado como NERDS LEIGO (caixa alta) e quando voltou pra resolver o tópico, havia se logado como nerds leigo (letras minúsculas).

Isso é um antigo bug do fórum, porém como estava entediado acabei resolvendo. Pode tentar novamente, agora vai!

[]'s



12. Re: Primeira esta contida na segunda [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 20/09/2011 - 07:41h

hudyfx escreveu:

decha eu responder também pô!! rsrs
todo mundo se divertindo e eu de fora rsrsrs segue minha contribuição rsrsr

@AprendiNoLinux ve oq vc acha rsrsrs...


falowww

segue o código:



#!/bin/bash
clear
echo -ne "digite a palavra A # "
read A
clear
echo "palavara \"A\" = $A"
echo -ne "digite a palavra B # "
read B
clear

if [ ${#A} -gt ${#B} ]; then
echo " Impossivel Palavra A estar comtida em B pois A eh maior que B"
else
cont=0
for ((i=0; i<=$((${#B} - ${#A}));i++)); do
echo "palavara \"A\" = $A"
echo "palavara \"B\" = $B"
echo "Rastreando a palavra"
echo -e "${B:0:$i}\e[31m${B:$i:${#A}}\e[0m${B:$((i + ${#A})):${#B}}"
echo ${B:$i:${#A}}
if [ "${B:$i:${#A}}" = "$A" ]; then
cont=$(($cont + 1))
fi
sleep .1
clear
done
fi

echo " A palavra $A esta contida $cont vezes em $B"

#eof



Eita loop danado kkkk ;)


oops; sempre que você iniciar uma digitação e não deseja que o forum quebre as linhas do entorno da sua imagem do lado esquerdo, use o quote




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts