嘿伙计们,我有以下脚本,我只是尝试在其中打印表情符号,但是当我执行脚本时,我看不到表情符号,但是当我printf emoji-utf-code
从控制台执行时,它可以工作。我错过了什么吗?
#!/usr/bin/env bash
UNICORN='\U1F984\n'
# this does not work when I run the script
printf ${UNICORN}
printf '\U1F984\n'
echo "Riding an ${UNICORN}"
# but when I type the printf command with the UTF-8 code in the console it works.
Run Code Online (Sandbox Code Playgroud)
PS:我怎么能在这里添加一个shell来运行脚本?我在其他发布的问题上看到过。
编辑 1:在一些评论后更正了代码。
仍然在控制台上得到这个:
printf '\U1F984\n'
Bourne Again shell 的 4.1 及更早版本不理解\U
和\u
转义内置printf
命令格式参数中的序列。要使用它们,您需要 4.2 或更高版本。2011 年 Bourne Again shell 的 4.2 版发行说明中包含了这一新增内容。
或者,使用 Z shell 版本 4.1.1 或更高版本。Z 外壳在printf
几年前的 2003 年获得了此扩展。93 Korn 外壳也有此扩展已有一段时间。
您当然可以将代码点转换为 UTF-8 并将 UTF-8 直接打印为八进制编码的八位字节序列,这应该适用于任何未扩展的符合标准的 printf
:
printf '\360\237\246\204\n'