我打算創建一個凱撒暗號,它接受一個參數,並轉移基於該參數的代碼,但我的代碼弄亂與上殼和下殼。凱撒暗號代碼不工作
所以,它的意思是這樣的:
$ 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