Работает в Bash, Dash (sh), ksh, zsh и ash и использует только встроенные функции:
Edit:
Вот версия ord, которая выводит в шестнадцатеричном формате, а chr принимает шестнадцатеричный ввод:
ordhex ()
{
printf '%x' "'$1"
}
chrhex ()
{
printf \\x"$1"
}
Оригинальные десятичные версии:
ord ()
{
echo -n $(( ( 256 + $(printf '%d' "'$1"))%256 ))
}
Примеры (с добавлением новой строки):
$ ord ' '
32
$ ord _
95
$ ord A
65
$ ord '*'
42
$ ord \~
126
Вот соответствующий chr
:
chr ()
{
printf \\$(($1/64*100+$1%64/8*10+$1%8))
}
Примеры:
$ chr 125
}
$ chr 42
*
$ chr 0 | xxd
0000000: 00 .
$ chr 255 | xxd
0000000: ff .