caesar_cipher() {

  
  
  
  

  local -a _ABC=( "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" )
  local -a _abc=( "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" )

  local _out

  if (( $
    echo "Usage: ${FUNCNAME[0]} -e|-d rotation (1-25) argument[(s)...]" >&2
    return 1
  fi

  _func="${1}"; shift
  _rotval="${1}"; shift

  while [[ -n "${1}" ]]; do
    for (( i = 0; i < ${
      for (( x = 0; x < ${
        case "${_func}" in
          "-e")
            [[ "${1:$i:1}" == "${_ABC[$x]}" ]] && _out+="${_ABC[(( ( x + _rotval )% 26 ))]}" && break
            [[ "${1:$i:1}" == "${_abc[$x]}" ]] && _out+="${_abc[(( ( x + _rotval )% 26 ))]}" && break;;
          "-d")
            [[ "${1:$i:1}" == "${_ABC[$x]}" ]] && _out+="${_ABC[(( ( x - _rotval )% 26 ))]}" && break
            [[ "${1:$i:1}" == "${_abc[$x]}" ]] && _out+="${_abc[(( ( x - _rotval )% 26 ))]}" && break;;
        esac
        
        (( x == ${
      done
    done
    _out+=" "
    shift
  done
  echo "${_out[*]}"
}