Преобразование в верхний регистр можно выполнить в Bash, используя:
ТЕКСТ="фубар"
эхо ${ТЕКСТ^^}
Шифр вращения может быть реализован с использованием тр
, например rot13:
эхо $ ТЕКСТ | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# sbbone
rot5 будет выглядеть так:
эхо $ ТЕКСТ | tr 'A-Za-z' 'F-ZA-Ef-za-e'
# кттгфв
Частичная версия без тр
команда:
#!/бин/баш
ТЕКСТ="AZ"
for (( i=0; i<${#TEXT}; i++ )); делать
printf "%s -> %d\n" "${ТЕКСТ:$i:1}" \'${ТЕКСТ:$i:1}
printf -v val "%d" \'${ТЕКСТ:$i:1}
сдвинутый=$(($val + 5))
эхо "сдвинуто: $ сдвинуто"
printf "\$(printf '%03o' $shifted)\n"
# A-Z находится в диапазоне:
№ 65-90
если [[ $shifted -gt 90 ]]; то
# если значение больше, чем буква Z, вам нужно вычесть 26
# чтобы 91 стала буквой А
echo "$shifted val слишком большой"
исправлено=$(($смещено - 26))
echo "исправленное значение ord $corrected"
printf "\$(printf '%03o' $исправлено)\n"
фи
сделано
вывод должен выглядеть так:
А -> 65
сдвинуто: 70
Ф
Z -> 90
сдвинуто: 95
_
95 знач. слишком большое
исправлено значение ордера 69
Е
Сценарий преобразует буквы в соответствующие коды ASCII, выполняет сдвиг и преобразует коды обратно в буквы. Вам нужно убедиться, что он работает для прописных и строчных букв (или поддерживает только один из них). Остальное я оставлю в качестве упражнения для любезного читателя.