我打算创建一个凯撒暗号,它接受一个参数,并转移基于该参数的代码,但我的代码弄乱与上壳和下壳。凯撒暗号代码不工作
所以,它的意思是这样的:
$ echo "I came, I saw, I conquered." | ./caesar.sh
V pnzr, V fnj, V pbadhrerq.
,但我得到:
V pnzr, V FnJ, V pBADHERrq.
我的代码是:
#!/bin/sh
if [ -z "[email protected]" ];then
rotation=13;
else
rotation=$((@ % 16));
fi
tr $(printf %${rotation}s | tr ' ' '.')\a-zA-Z a-zA-Z
我该如何解决这个问题?
如果有人经过多个参数,你就不可能得到你想要的结果。你应该在一个'tr'命令中旋转大写字母,而在另一个中旋转小写字母?或者你是否需要单独生成映射并将它们组合得更好?脚本末尾的分号都是不必要的;他们将是必要的一线。 –
如果您尝试编码'我可以看到朔望AT MIDNIGHT'(与13默认偏移),你得到了很多更'Z's输出比你真的想(在下半年全部大写字母字母最终为'Z',这对于加密文本的可译性不利)。模16是否意味着模26? –
这也是我有问题,16本来是26 – xXxXXXXX