восстановить сеанс экрана ожидания под FreeBSD

В общем, shell понимает шестнадцатеричные, восьмеричные и десятичные числа в переменных, если они определены как целые числа:

$ declare -i v1 v2 v3 v4 v5 v6 v7
$ v1=0112
$ v2=74
$ v3=0x4a
$ v4=8#112
$ v5=10#74
$ v6=16#4a
$ v7=18#gg
echo "$v1 $v2 $v3 $v4 $v5 $v6 $v7"
74 74 74 74 74 74 304

Или они являются результатом "Арифметического расширения":

$ : $(( v1=0112, v2=74, v3=0x4a, v4=8#112, v5=10#74, v6=16#4a, v7=18#gg ))
$ echo "$v1 $v2 $v3 $v4 $v5 $v6 $v7"
74 74 74 74 74 74 304

Итак, вам нужен только один способ вывести символ, принадлежащий значению переменной.
Но вот два возможных способа:

$ var=$((0x65))
$ printf '%b\n' "\\$(printf '0%o' "$var")"
e

$ declare -i var
$ var=0x65; printf '%b\n' "\U$(printf '%08x' "$var")"
e

Нужны два printf, один для преобразования значения в шестнадцатеричную строку, а второй для фактической печати символа.

Второй напечатает любую точку UNICODE (если ваша консоль правильно настроена).
Например:

$ var=0x2603; printf '%b\n' "\U$(printf '%08x' "$var")"
☃

Снежный человек.

Символ, который имеет представление в формате utf-8 как f0 9f 90 ae - это 0x1F42E. Найдите cow face site:fileformat.info, чтобы получить его:

$ var=0x1F42F; printf '%b\n' "\U$(printf '%08x' "$var")"

0
06.07.2015, 18:37
0 ответов

Теги

Похожие вопросы