如何在不使用硬编码字典的情况下,将一个字符串的每个字母按bash向下或向上移动一定数量的字母?
你的意思是像ROT13:
pax$echo 'hello there' | tr '[a-z]' '[n-za-m]' uryyb gurer pax$echo 'hello there' | tr '[a-z]' '[n-za-m]' | tr '[a-z]' '[n-za-m]' hello there
对于要提供任意旋转(0到26)的更通用的解决方案,您可以使用:
#!/usr/bin/bash dual=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz phrase='hello there' rotat=13 newphrase=$(echo $phrase | tr "${dual:0:26}" "${dual:${rotat}:26}") echo ${newphrase}