Shell вычесть одну букву алфавита из текущей буквы - PullRequest
0 голосов
/ 03 июля 2018

У меня есть файл с именем "current_letter.txt", который отображает сегодняшнюю букву (A-K)

cat current_letter.txt
C

Каждый день буква увеличивается на одну букву (вчерашняя буква была бы "B", завтрашняя буква будет "D"

Как поместить вчерашнюю букву в переменную?

Example:
A=K
B=A
C=B
D=C
E=D
F=E
G=F
H=G
I=H
J=I
K=J

Я пытаюсь поместить вчерашнее письмо в переменную типа

yesterdays_letter=`cat current_letter.txt - 1`

Так что он использует - k, затем повторяется

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы можете использовать tr для всех ваших потребностей шифра Цезаря:

#!/bin/bash
for c in {A..Z}
do
  b=$(printf '%s' "$c" | tr 'B-ZA' 'A-Z')
  echo "One letter before $c is $b"
done

Это выводит:

One letter before A is Z
One letter before B is A
One letter before C is B
One letter before D is C
(etc)
0 голосов
/ 03 июля 2018

Пример раздела, который вы даете, не имеет смысла, это содержимое файла?

вот решение:

a='ABCDEFGHIJK';
v=$(cat current_letter.txt);
if [ "$v" = 'A' ]; then 
  var='K'; 
else 
  var=${a[$(($(expr index $a $v)-2))]};
fi;
echo $var;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...