/ rot() and rotl()

supports up to rot 25, and rotl is rot length (rotate the length of the string)
This commit is contained in:
fro
2025-08-24 08:26:31 -05:00
parent 78df92bcf7
commit dfad93c71d

View File

@@ -355,20 +355,123 @@ rot() {
echo "$2" | tr 'a-z' 'b-za'
elif [[ $1 == "-1" ]] ; then
echo "$2" | tr 'b-za' 'a-z'
elif [[ $1 == "2" ]] ; then
echo "$2" | tr 'a-z' 'c-zab'
elif [[ $1 == "-2" ]] ; then
echo "$2" | tr 'c-zab' 'a-z'
elif [[ $1 == "3" ]] ; then
echo "$2" | tr 'a-z' 'd-zabc'
elif [[ $1 == "-3" ]] ; then
echo "$2" | tr 'd-zabc' 'a-z'
elif [[ $1 == "4" ]] ; then
echo "$2" | tr 'a-z' 'e-zabcd'
elif [[ $1 == "-4" ]] ; then
echo "$2" | tr 'e-zabcd' 'a-z'
elif [[ $1 == "5" ]] ; then
echo "$2" | tr 'a-z' 'f-zabcde'
elif [[ $1 == "-5" ]] ; then
echo "$2" | tr 'f-zabcde' 'a-z'
elif [[ $1 == "6" ]] ; then
echo "$2" | tr 'a-z' 'g-zabcdef'
elif [[ $1 == "-6" ]] ; then
echo "$2" | tr 'g-zabcdef' 'a-z'
elif [[ $1 == "7" ]] ; then
echo "$2" | tr 'a-z' 'h-zabcdefg'
elif [[ $1 == "-7" ]] ; then
echo "$2" | tr 'h-zabcdefg' 'a-z'
elif [[ $1 == "8" ]] ; then
echo "$2" | tr 'a-z' 'i-zabcdefgh'
elif [[ $1 == "-8" ]] ; then
echo "$2" | tr 'i-zabcdefgh' 'a-z'
elif [[ $1 == "9" ]] ; then
echo "$2" | tr 'a-z' 'j-zabcdefghi'
elif [[ $1 == "-9" ]] ; then
echo "$2" | tr 'j-zabcdefghi' 'a-z'
elif [[ $1 == "10" ]] ; then
echo "$2" | tr 'a-z' 'k-zabcdefghij'
elif [[ $1 == "-10" ]] ; then
echo "$2" | tr 'k-zabcdefghij' 'a-z'
elif [[ $1 == "11" ]] ; then
echo "$2" | tr 'a-z' 'l-zabcdefghijk'
elif [[ $1 == "-11" ]] ; then
echo "$2" | tr 'l-zabcdefghijk' 'a-z'
elif [[ $1 == "12" ]] ; then
echo "$2" | tr 'a-z' 'm-zabcdefghijkl'
elif [[ $1 == "-12" ]] ; then
echo "$2" | tr 'm-zabcdefghijkl' 'a-z'
elif [[ $1 == "13" ]] ; then
echo "$2" | tr 'a-z' 'n-zabcdefghijklm'
elif [[ $1 == "-13" ]] ; then
echo "$2" | tr 'n-zabcdefghijklm' 'a-z'
elif [[ $1 == "14" ]] ; then
echo "$2" | tr 'a-z' 'o-zabcdefghijklmn'
elif [[ $1 == "-14" ]] ; then
echo "$2" | tr 'o-zabcdefghijklmn' 'a-z'
elif [[ $1 == "15" ]] ; then
echo "$2" | tr 'a-z' 'p-zabcdefghijklmno'
elif [[ $1 == "-15" ]] ; then
echo "$2" | tr 'p-zabcdefghijklmno' 'a-z'
elif [[ $1 == "16" ]] ; then
echo "$2" | tr 'a-z' 'q-zabcdefghijklmnop'
elif [[ $1 == "-16" ]] ; then
echo "$2" | tr 'q-zabcdefghijklmnop' 'a-z'
elif [[ $1 == "17" ]] ; then
echo "$2" | tr 'a-z' 'r-zabcdefghijklmnopq'
elif [[ $1 == "-17" ]] ; then
echo "$2" | tr 'r-zabcdefghijklmnopq' 'a-z'
elif [[ $1 == "18" ]] ; then
echo "$2" | tr 'a-z' 's-zabcdefghijklmnopqr'
elif [[ $1 == "-18" ]] ; then
echo "$2" | tr 's-zabcdefghijklmnopqr' 'a-z'
elif [[ $1 == "19" ]] ; then
echo "$2" | tr 'a-z' 't-zabcdefghijklmnopqrs'
elif [[ $1 == "-19" ]] ; then
echo "$2" | tr 't-zabcdefghijklmnopqrs' 'a-z'
elif [[ $1 == "20" ]] ; then
echo "$2" | tr 'a-z' 'u-zabcdefghijklmnopqrst'
elif [[ $1 == "-20" ]] ; then
echo "$2" | tr 'u-zabcdefghijklmnopqrst' 'a-z'
elif [[ $1 == "21" ]] ; then
echo "$2" | tr 'a-z' 'v-zabcdefghijklmnopqrstu'
elif [[ $1 == "-21" ]] ; then
echo "$2" | tr 'v-zabcdefghijklmnopqrstu' 'a-z'
elif [[ $1 == "22" ]] ; then
echo "$2" | tr 'a-z' 'w-zabcdefghijklmnopqrstuv'
elif [[ $1 == "-22" ]] ; then
echo "$2" | tr 'w-zabcdefghijklmnopqrstuv' 'a-z'
elif [[ $1 == "23" ]] ; then
echo "$2" | tr 'a-z' 'x-zabcdefghijklmnopqrstuvw'
elif [[ $1 == "-23" ]] ; then
echo "$2" | tr 'x-zabcdefghijklmnopqrstuvw' 'a-z'
elif [[ $1 == "24" ]] ; then
echo "$2" | tr 'a-z' 'y-zabcdefghijklmnopqrstuvwx'
elif [[ $1 == "-24" ]] ; then
echo "$2" | tr 'y-zabcdefghijklmnopqrstuvwx' 'a-z'
elif [[ $1 == "25" ]] ; then
echo "$2" | tr 'a-z' 'z-zabcdefghijklmnopqrstuvwxy'
elif [[ $1 == "-25" ]] ; then
echo "$2" | tr 'z-zabcdefghijklmnopqrstuvwxy' 'a-z'
fi
fi
}
#echo "frode" | tr 'a-z' 'i-zabcdefgh'
rotl() {
if [[ -n $1 ]] ; then
size=${#1}
if [[ "$size" > 25 ]] && [[ "$size" < 51 ]] ; then
echo "reduce size by 25"
size=$((size - 25))
fi
# https://stackoverflow.com/questions/20871534/concatenate-in-bash-the-output-of-two-commands-without-newline-character
{ echo "rot +$size: "; rot $size $1; } | tr "\n" " "
echo
{ echo "rot -$size: "; rot -$size $1; } | tr "\n" " "
echo
fi
}
# ---