Здравствуйте!
Понадобилось мне тут получить символ по его HEX коду, и даже в мануале к printf, в списке интерпретируемых последовательностей, такая возможность нашлась!
Привожу фрагмент help-а:
\xHH byte with hexadecimal value HH (1 to 2 digits)\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)
\UHHHHHHHH
Unicode character with hex value HHHHHHHH (8 digits)
Но вот незадача!
Реально оказалось что работает только последовательность \xHH, а остальные выводятся как будто это обычный текст!
Вот пример:
printf "\xC0" # Выводит имвол "А"
echo -e "\xC0" # Даже echo выводит символ "А", хотя в мане про эту возможность ни слова!
printf "\u0410" # А вот здесь грабли! И выводится "\u0410"
Я перепробовал все возможные типы форматирования, все бестолку!
И то, что на сях делается просто элементарно,
wchar_t single_char = (wchar_t)(0x0410) // Символ 'А'
или наоборот:
long uint_char = (long)(L'А')
для bash, в виду "ограничений" самого языка, является проблеммой не тривиальной...
Думаю, суть проблеммы я изложил достаточно понятно. Прошу уважаемых участников форума поделится со мной своим опытом и указать мне (скорее всего видимо на мои кривые руки) путь решения этой задачи.-------
С Уважением, Евгений.
[c0der@rock ~]$ printf "\xC0\n" # Выводит имвол "А"
А
[c0der@rock ~]$ echo -e "\xC0"
А
[c0der@rock ~]$ printf "\u0410\n" # А вот здесь грабли! И выводится "\u0410"
АЛокаль CP1251, aterm/xterm -- всё работает. Дистрибутив ALT Linux, если это имеет значение.
У меня лично так:$ printf "\u0410\n"
\u0410
$ /bin/printf "\u0410\n"
А
$ type printf
printf is a shell builtinТак что, всё соответствует. В мане по bash ничего такого и не заявлено касательно его printf.
[...]
>$ type printf
>printf is a shell builtinУ меня zsh, кстати.
>У меня zsh, кстати.Да я так и подумал, что не bash...