2013-04-15 14 views
9

Z bash, można użyć printf z kodami sześciokątnychdruku znaków Unicode

\xHH byte with hexadecimal value HH (1 to 2 digits) 
\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits) 

przykład

$ printf '\x26' 
& 

Jednak przykład Unicode nie drukuje prawidłowo

$ printf '\u0026' 
\u0026 

moją wersję Bash

$ echo $BASH_VERSION 
4.1.10(4)-release 

Odpowiedz

7

Którą wersję bash używasz (echo $BASH_VERSION lub bash --version)? Wyjątki Unicode działają w bash 4.2, ale nie w wersji 3.2.48. Podejrzewam, że dodano obsługę w bash 4.0.

Aktualizacja: Potwierdzam, że nie działa w wersji bash 4.1.2. Ta funkcja prawdopodobnie została dodana w wersji 4.2.

Aktualizacja 2: Z release notes for bash 4.2:

d. $'...', echo i printf zrozumieć \uXXXX i \UXXXXXXXX ucieczki sekwencji.

+0

W starszych wersjach można użyć ** $ printf "% s" "%" **, aby wydrukować symbol **% **? –

+1

Zakładam, że byłoby dobrze, a także 'printf" %% "'. – chepner

+0

Dzięki, to działa. –