1234567891011121314151617181920212223242526 |
- number=13
- while getopts n: opt; do
- case $opt in
- n) number=${OPTARG};;
- ?) exit 1;;
- esac
- done
- shift $((OPTIND - 1))
- if [ $# -ne 0 ]; then
- printf 'usage: %s [-n number]\n' "$0"
- printf '\t-n the number of characters to rotate (default 13)\n'
- exit 1
- fi
- number=$((number % 26))
- A=$(printf '%d' 0$(printf '%o' \"A\"))
- FROM=$(printf '%o' $((A + number)))
- THRU=$(printf '%o' $((A + number - 1)))
- TRUPPER=$(printf '%b-ZA-%b\n' "\0${FROM}" "\0${THRU}")
- trlower=$(echo $TRUPPER | tr [[:upper:]] [[:lower:]])
- exec tr "A-Za-z" "${TRUPPER}${trlower}"
|