Em conchas semelhantes a Bourne:
$ set 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
$ echo "$5"
e
(com versões recentes de ksh93
, bash
ou zsh
, você pode reduzir a linha set
para set {a..z}
)
Ou:
$ awk 'BEGIN{printf("%c\n", 0x60 + 5)}'
e
Com algumas implementações de dc
(pelo menos,% GNUdc
):
$ echo 96 5 + P | dc
e
Com zsh
, você pode usar a base 36:
$ echo $(([##36] 9 + 5))
E
Ou use sequências
octal em %code% : printf %b
ooo
$ printf '%b\n' "$ printf '%b\n' "\u$(([##16]0x3B0 + 5))"
ε
$(([##8]0x60 + 5))"
e
Para alfabetos não ingleses, assumindo uma localidade UTF-8 (aqui para grego):
$ set а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
$ echo "$5"
д
É baseado na sequência de caracteres em Unicode, não há muita garantia de que a ordem corresponderá à ordem alfabética comum para o seu idioma na sua região, assim você pode codificar a lista completa de caracteres manualmente e usar a primeira forma.
Como para o alfabeto russo (de acordo com a Wikipedia):
$ set 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
$ echo "$5"
e
Que não corresponde exatamente à ordem Unicode.