Shell:在变量中打印unicode单词

时间:2014-12-03 13:04:58

标签: linux shell unicode

我已经知道我可以使用类似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支持。

1 个答案:

答案 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或其他国家/地区代码。