我已经知道我可以使用类似echo -ne '\xe4\xb8\xad\xe6\x96\x87'
的内容来打印unicode字样
但它是硬编码的。我如何将它用于变量?
这是我的剧本:
text=($1)
for i in "${text[@]}";do
#debug
echo "current word is ($i)"
#code use $i goes here
done
输出结果为:
当前字是(\ xe4 \ xb8 \ xad \ xe6 \ x96 \ x87)
直接使用echo -ne $i
不起作用。
PS:如果你想知道为什么脚本输入参数是如此奇怪,它来自Perl CGI脚本。也许Perl脚本编写得不好,但我现在不想深入研究Perl CGI的unicode支持。
答案 0 :(得分:1)
它应该与Bash和echo -e
一起使用。只要确保你真的使用Bash(而不是,例如在Ubuntu Linux上,破折号外壳):
$ cat script
#!/bin/bash
foo='\xe4\xb8\xad\xe6\x96\x87'
echo -e "$foo"
$ ./script
中文
还要确保您的环境(区域设置)设置为使用UTF-8,例如使用LANG=en_US.UTF-8
或其他国家/地区代码。