[英]echo unicode character as utf8 from file
当我在终端中运行echo "\\U0041"
时,我得到 "A"。
但是,当我从文件中运行echo "\\U0041"
说example.sh
然后运行它。
bash ./example.sh
或sh ./example.sh
我得到文字\\U0041
。
为什么? 如何从文件中回显/打印“A”。
更新:
"$SHELL" --version
-> zsh 5.8 (x86_64-apple-darwin20.0)
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 中运行脚本。
我在这个问题上得到了一些帮助,但我的问题的完整解决方案是这样的:
bash
使用自制brew install bash
echo -e
或printf
。HEX='0041'
echo -e "\u$HEX"
bash
而不是sh
运行。$ bash ./example.sh
A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.