繁体   English   中英

从文件中将 unicode 字符作为 utf8 回显

[英]echo unicode character as utf8 from file

当我在终端中运行echo "\\U0041"时,我得到 "A"。

但是,当我从文件中运行echo "\\U0041"example.sh然后运行它。

bash ./example.shsh ./example.sh

我得到文字\\U0041

为什么? 如何从文件中回显/打印“A”。


更新

  • "$SHELL" --version -> zsh 5.8 (x86_64-apple-darwin20.0)
  • 我使用 brew 将 bash 升级到 bash-5.1。
  • 当我从文件中运行echo $'\A' ,我确实看到了“A”

我现在的问题是,当我似乎只能用单引号打印 uf8,但变量需要双引号时,如何让十六进制代码成为变量?

HEX='0041'
echo $"\u$HEX"

打印: \A

您在终端中使用zsh作为 shell。 它的echo版本可以理解\\uXXXX转义。 现代版本的bash内置的echo如此(如果使用echo -e或启用了xdg_echo shell 选项),但是 Mac OS 附带的古老版本太旧了,无法使用它。

echo $'\A'Bash 4.2 之后打印“A”。 $''从 Bash 2.0 开始可用。)看起来您可能正在 Bash 3.2 和更新的交互式 shell 中运行脚本。

我在这个问题上得到了一些帮助,但我的问题的完整解决方案是这样的:

  1. 更新bash使用自制brew install bash
  2. 在文件中使用echo -eprintf
HEX='0041'
echo -e "\u$HEX"
  1. 使用bash而不是sh运行。
$ bash ./example.sh
A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM