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
#!/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]
removidousa Nenhuma
Post recolhido
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
#
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]
alexandregmsusa Ubuntu
Post recolhido
Enviado em 19/09/2011 - 18:39h
As 2 respostas estão corretíssimas, mas segue outra mais simples:
E viva o gde numero de possibilidade do universo shell!!
5. Re: Primeira esta contida na segunda [RESOLVIDO]
removidousa Nenhuma
Post recolhido
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 _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'
nerds leigousa Ubuntu
Post recolhido
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]
removidousa Nenhuma
Post recolhido
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]
AprendiNoLinuxusa Ubuntu
Post recolhido
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 _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
nerds leigousa Ubuntu
Post recolhido
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
hudyfxusa Outra
Post recolhido
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
#!/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]
fabiousa Ubuntu
Post recolhido
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]
AprendiNoLinuxusa Ubuntu
Post recolhido
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
#!/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