2017-10-16 4 views
0

Ce traducteur latin cochon fonctionne pour tous les mots commençant par une voyelle; Cependant, ce script n'imprime pas rien quand un argument commence par une consonneCochon latin en Bash

PIGIFY=$1 
vowels=(a e i o u A E I O U) 
CHECK=0 
for element in $vowels; do 
    if [[ $element == ${PIGIFY:0:1} ]] 
    then 
     echo ${PIGIFY}ay 
     break 
    fi 
    if [ $CHECK -eq 9 ] 
    then 
     echo ${PIGIFY:1}${PIGIFY:0:1}way 
    fi 
    CHECK=$((CHECK+1)) 
done 

Mon script va essayer de comparer la première lettre de l'argument à toutes les voyelles possibles, y compris les lettres majuscules. Une fois que nous avons le chercheur U et que nous trouvons que le mot ne commence pas par U, le compteur devrait être égal à 9, et ensuite je veux que la seconde partie soit répétée. Je me demande si ma deuxième condition est en bonne forme ou si j'ai raté mon incrément pour mon compteur.

+2

'$ voyelles' se développe juste à' a', car elle équivaut à '$ {voyelles [0]}'. Vous vouliez probablement dire "$ {voyelles [@]}" '. –

Répondre

1

Au lieu d'essayer de faire tout de cette logique dans votre boucle, juste définir une variable si une voyelle se trouve, briser la boucle, puis faites votre écho après en fonction de la nouvelle variable:

PIGIFY=$1 
vowels=(a e i o u A E I O U) 
for element in $vowels; do 
    if [[ $element == ${PIGIFY:0:1} ]] 
    then 
     startswithvowel=true 
     break 
    fi 
done 

if [ $startswithvowel ]; then 
     echo ${PIGIFY}ay 
else 
     echo ${PIGIFY:1}${PIGIFY:0:1}way 
fi