Рейтинг:0

Шифр вращения сценария Bash

флаг pt

Здравствуйте, мне нужно написать шифр вращения сценария bash. К сожалению, я не могу получить больше сейчас. Далее мне нужно использовать условие If-Else, чтобы преобразовать буквы в числа и сдвинуть плюс 5 на букву. Может кто-нибудь, пожалуйста, помогите мне, как это сделать?

Спасибо

#!/бин/баш
#ГРАНЬ=$1
ОТ=5
ТЕКСТ=$2
КРИПТ_ТЕКСТ=""

эхо $ROT
эхо $ТЕКСТ

эхо "зашифровано: $CRYPT_TEXT"

для c в $(echo $TEXT | sed -e 's/\(.\)/\1\n/g')
делать
  эхо $c
сделано
Рейтинг:6
флаг ie

Преобразование в верхний регистр можно выполнить в 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, выполняет сдвиг и преобразует коды обратно в буквы. Вам нужно убедиться, что он работает для прописных и строчных букв (или поддерживает только один из них). Остальное я оставлю в качестве упражнения для любезного читателя.

флаг pt
проблема в. Мне нужно решить это без команды tr. Только с if и else на следующем шаге.
флаг ie
@ joshi1999 Использование только если/иначе не имеет особого смысла. Вы будете писать код, например, если A, то напечатать E. На самом деле это не так много программирования. Я добавил пример перебора текста в bash.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.