Shell从当前字母中减去一个字母

时间:2018-07-03 01:07:05

标签: linux bash shell unix

我有一个名为“ 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 :(得分:3)

您可以使用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)

答案 1 :(得分:0)

您提供的示例部分没有意义,是文件的内容吗?

这是解决方法:

a='ABCDEFGHIJK';
v=$(cat current_letter.txt);
if [ "$v" = 'A' ]; then 
  var='K'; 
else 
  var=${a[$(($(expr index $a $v)-2))]};
fi;
echo $var;