З bash(або будь-якою оболонкою, за умови наявності printfкоманди (стандартна команда POSIX, часто вбудована в оболонки)):
printf '%x\n' 85
Завдяки цьому zshви також можете:
dec=85
hex=$(([##16]dec))
Це працює для баз від 2 до 36 (з 0-9a-zрегістром, як цифри).
З ksh93, ви можете використовувати:
dec=85
base54=$(printf %..54 "$dec")
Який працює для баз від 2 до 64 (з 0-9a-zA-Z@_цифрами).
З kshі zsh, є також:
$ typeset -i34 x=123; echo "$x"
34#3l
Хоча це обмежено базами до 36 в ksh88, zsh і pdksh і 64 в ksh93.
Зауважте, що всі вони обмежені розміром longцілих чисел у вашій системі ( intз деякими оболонками). Для чогось більшого ви можете використовувати bcабо dc.
$ echo 'obase=16; 9999999999999999999999' | bc
21E19E0C9BAB23FFFFF
$ echo '16o 9999999999999999999999 p' | dc
21E19E0C9BAB23FFFFF
Для підтримуваних баз від 2 до деякого числа, вимагається POSIX, щонайменше до 99. Для баз більше 16 цифри, що перевищують 9, представлені у вигляді десяткових чисел, розділених пробілами, десяткові цифри.
$ echo 'obase=30; 123456' | bc
04 17 05 06
Або те саме з dc( bcраніше був (і все ще є в деяких системах) обгорткою dc):
$ echo 30o123456p | dc
04 17 05 06