[BASH] Ayuda para mejorar

Iniciado por Delacure Mihawk, 8 Septiembre 2011, 13:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Delacure Mihawk

Bueno pues por culpa del warzone, se me paso por la cabeza hacer un mini scrip para descifrar el cifrado de julio cesar (más info+), y ya que estaba me propuse también añadir la función de cifrar, hace bastante que no toco bash, y antes tampoco es que supiera mucho.. El scrip funciona, que era mi objetivo, pero estoy bastante seguro de que se puede mejorar, y ahí mi pregunta--> ¿Como lo abrías echo vosotros?

#!/bin/bash
#
### DeCrip
#
function decrip(){
DIRS=`dirs`
clear
echo "Intrudueix el missatge xifrat:"
# echo "introduce el mensaje cifradado:"
read MISS
echo $MISS | tr "a-z" "b-za" >> Decript.txt
echo $MISS | tr "a-z" "c-zab" >> Decript.txt
echo $MISS | tr "a-z" "d-za-c" >> Decript.txt
echo $MISS | tr "a-z" "e-za-d" >> Decript.txt
echo $MISS | tr "a-z" "f-za-e" >> Decript.txt
echo $MISS | tr "a-z" "g-za-f" >> Decript.txt
echo $MISS | tr "a-z" "h-za-g" >> Decript.txt
echo $MISS | tr "a-z" "i-za-h" >> Decript.txt
echo $MISS | tr "a-z" "j-za-i" >> Decript.txt
echo $MISS | tr "a-z" "k-za-j" >> Decript.txt
echo $MISS | tr "a-z" "l-za-k" >> Decript.txt
echo $MISS | tr "a-z" "m-za-l" >> Decript.txt
echo $MISS | tr "a-z" "n-za-m" >> Decript.txt
echo $MISS | tr "a-z" "o-za-n" >> Decript.txt
echo $MISS | tr "a-z" "p-za-o" >> Decript.txt
echo $MISS | tr "a-z" "q-za-p" >> Decript.txt
echo $MISS | tr "a-z" "r-za-q" >> Decript.txt
echo $MISS | tr "a-z" "s-za-r" >> Decript.txt
echo $MISS | tr "a-z" "t-za-s" >> Decript.txt
echo $MISS | tr "a-z" "u-za-t" >> Decript.txt
echo $MISS | tr "a-z" "v-za-u" >> Decript.txt
echo $MISS | tr "a-z" "w-za-v" >> Decript.txt
echo $MISS | tr "a-z" "x-za-w" >> Decript.txt
echo $MISS | tr "a-z" "y-za-x" >> Decript.txt
echo $MISS | tr "a-z" "za-y" >> Decript.txt
echo "25 possibilidades generadas 100%"
echo "Decript.txt guardado en $DIRS "
echo  
echo "----------------------------------------------------"
}
#############################
#
### Encrip
#
function encrip(){
while :
do
 echo "Número de desplaçaments? (1-25)"
# echo "numero de desplazamientos? (1-25)"
 read NUMERO
 echo "Escriu el missatge a cifrar (recorda no utilitzar la 'ñ' ni cap caràcter especial):"
# echo " Escribe el mensaje a cifrar (recuerda no utilizar la letra 'ñ' ni ningún carácter especial.)
 read MIS
 case $NUMERO in
1) echo $MIS | tr "a-z" "b-za";menu;;
2) echo $MIS | tr "a-z" "c-zab";menu;;
3) echo $MIS | tr "a-z" "d-za-c";menu;;
4) echo $MIS | tr "a-z" "e-za-d";menu;;
5) echo $MIS | tr "a-z" "f-za-e";menu;;
6) echo $MIS | tr "a-z" "g-za-f";menu;;
7) echo $MIS | tr "a-z" "h-za-g";menu;;
8) echo $MIS | tr "a-z" "i-za-h";menu;;
9) echo $MIS | tr "a-z" "j-za-i";menu;;
10) echo $MIS | tr "a-z" "k-za-j";menu;;
11) echo $MIS | tr "a-z" "l-za-k";menu;;
12) echo $MIS | tr "a-z" "m-za-l";menu;;
13) echo $MIS | tr "a-z" "n-za-m";menu;;
14) echo $MIS | tr "a-z" "o-za-n";menu;;
15) echo $MIS | tr "a-z" "p-za-o";menu;;
16) echo $MIS | tr "a-z" "q-za-p";menu;;
17) echo $MIS | tr "a-z" "r-za-q";menu;;
18) echo $MIS | tr "a-z" "s-za-r";menu;;
19) echo $MIS | tr "a-z" "t-za-s";menu;;
20) echo $MIS | tr "a-z" "u-za-t";menu;;
21) echo $MIS | tr "a-z" "v-za-u";menu;;
22) echo $MIS | tr "a-z" "w-za-v";menu;;
23) echo $MIS | tr "a-z" "x-za-w";menu;;
24) echo $MIS | tr "a-z" "y-za-x";menu;;
25) echo $MIS | tr "a-z" "za-y";menu;;
 esac
done
}
#
#################
##### Menu ######
#################
#
function menu(){
while :
do
 echo
 echo
 echo "Elige una opcion"
 echo "1) cifrar"
 echo "2) descifrar"
 echo "3) Salir"
 read OPCION
 case $OPCION in
   1)
encrip;;
   2)
decrip;;
   3)
echo
echo "byee :)"
echo
exit
  esac
done
}

####### Executem/ejecutamos el menu ###########
menu


Y tambien un par de preguntas:

1-  al principio hago DIRS=`dirs`  para luego echo "Decript.txt guardado en $DIRS " , estoy seguro de que hay alguna forma más limpia de indicar donde se crea el archivo de texto  :xD
2- y en la funcion "while" si alguien me puede explicar el significado de los dos puntos " : ", me lo imagino pero no estoy 100% seguro xdd

salu2.