Invertendo strings usando vetores
Publicado por maxshu (última atualização em 17/11/2014)
[ Hits: 5.932 ]
Homepage: programacaocomputador.blogspot.com.br
Hoje trago um simples inversor de strings, mas que possui alguns comandos avançados.
Um colega deste site (truster0) perguntou o seguinte:
Fala pessoal, então não tenho muito conhecimento em shell e preciso fazer este exercicio abaixo:
Faça um script que verifique se um nome é um palíndromo. Uma palavra é um palíndromo se a sua leitura é a mesma da esquerda para a direita e vice versa. Dica: use um array para armazenar a palavra. Exemplo: ARARA, ANA, etc.
Me arrisquei e deu isso mas está dando erro:
#!/bin/bash
echo "Digite a palavra a ser testada"
read palavra
for ((i=o ; i<=tamanho ; i++))do
if ((palavra=palavra[((tamanho-1)-i))]
verifica=1
if(verifica -eq 0)then
echo "Igual de tras pra frente"
else
echo "Diferente de tras pra frente"
fi
No tópico: http://www.vivaolinux.com.br/topico/Shell-Script/Ajuda-com-Shell-Script-7
Então, mandei uma resposta pro problema:
#!/bin/bash
read -p "Digite a palavra a ser testada: " palavra
reverse="$(echo $palavra | rev)"
if [ "$reverse" = "$palavra" ]
then {
echo "Igual de tras pra frente"
}
else {
echo "Diferente de tras pra frente"
}
fi
Este é um script simples, pois usa comandos conhecidos do shell Linux. Mas o colega, não conformado com a solução, pediu que o script fosse iterado caractere por caractere. Então, resolvi elaborar um script mais avançado.
Pessoal, este script é muito simples, mas poderoso quando queremos compara caracteres individuais.
#!/bin/bash read -p "Digite a palavra a ser testada: " palavra cont0=1 cont1=$(echo $palavra | wc -m) contchar=$(echo "$cont1-$cont0" | bc) for(( i=1; i <= $contchar; i++ )) do c1[$i]=$(echo "$palavra" | cut -b $i) done h=$(echo "$contchar+$cont0" | bc) for(( k=1; k<=$contchar; k++ )) do j=$(echo "$h-$k" | bc) c2[$j]=$(echo ${c1[$k]}) done if [ "$(echo ${c2[@]})" == "$(echo ${c1[@]})" ] then { echo "Igual de tras pra frente" } else { echo "Diferente de tras pra frente" } fi
Player de música em Shell com Yad
Adicionando novo usuário manualmente
shradio.sh - ouça rádios online
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Como redefinir o diretório Home? (4)
Problemas com adaptadores wifi no Zorin (1)
Ocomon 6.0.1 - Problemas ao editar configurações estendidas (7)