/bin/sh VS /bin/bash 中的 Unicode 字符
Unicode characters in /bin/sh VS /bin/bash
请尝试:
bash -c "printf '\u2744'"
bash -c "echo -e '\u2744'"
等等:
sh -c "printf '\u2744'"
sh -c "echo -e '\u2744'"
为什么在 /bin/bash
中我可以得到那个 unicode 字符,但在 /bin/sh
中却不能?如何在 /bin/sh
?
中打印一个 unicode 字符(例如 ❄
)
因为 bash 仅支持 4.2
发布系列中的那些。
来自https://tiswww.case.edu/php/chet/bash/CHANGES:
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-alpha,
and the previous version, bash-4.1-release.
....
3. New Features in Bash
....
d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
如果你想在 /bin/sh
中打印一个 unicode 字符(POSIX 不需要它来支持 \u
序列),要么将它直接嵌入到你的脚本中,要么中断它分解成它的组成字节并单独打印。
题目中使用的雪花符号:
printf '254'
现在,您如何找到这些数字?最简单的方法是使用 shell 中的 od
, 支持 unicode:
$ printf '\u2744' | od -b
0000000 342 235 204
请尝试:
bash -c "printf '\u2744'"
bash -c "echo -e '\u2744'"
等等:
sh -c "printf '\u2744'"
sh -c "echo -e '\u2744'"
为什么在 /bin/bash
中我可以得到那个 unicode 字符,但在 /bin/sh
中却不能?如何在 /bin/sh
?
❄
)
因为 bash 仅支持 4.2
发布系列中的那些。
来自https://tiswww.case.edu/php/chet/bash/CHANGES:
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-alpha,
and the previous version, bash-4.1-release.
....
3. New Features in Bash
....
d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
如果你想在 /bin/sh
中打印一个 unicode 字符(POSIX 不需要它来支持 \u
序列),要么将它直接嵌入到你的脚本中,要么中断它分解成它的组成字节并单独打印。
题目中使用的雪花符号:
printf '254'
现在,您如何找到这些数字?最简单的方法是使用 shell 中的 od
, 支持 unicode:
$ printf '\u2744' | od -b
0000000 342 235 204