2014-12-03 53 views
1

我已经知道我可以使用类似echo -ne '\xe4\xb8\xad\xe6\x96\x87'的东西来打印unicode字。
但它是硬编码的。我怎样才能将它用于变量?Shell:在变量中打印unicode字

这里是我的脚本:

text=($1) 
for i in "${text[@]}";do 
    #debug 
    echo "current word is ($i)" 
    #code use $i goes here 
done 

输出是:

当前字是(\ XE4 \ XB8 \ X-AD \ XE6 \ X96 \的x87)

直接使用echo -ne $i不起作用。 PS:如果你想知道为什么脚本输入参数很奇怪,它来自Perl CGI脚本。也许Perl脚本写得不好,但我现在不想深入研究Perl CGI的unicode支持。

回答

1

它应该与Bash和echo -e一起使用。只要确保你真的使用巴什(而不是,例如在Ubuntu Linux,仪表壳):

$ cat script 
#!/bin/bash 
foo='\xe4\xb8\xad\xe6\x96\x87' 
echo -e "$foo" 

$ ./script 
中文 

另外,还要确保您的环境(环境)是设置为使用UTF-8,例如与LANG=en_US.UTF-8或不同的国家代码。

+0

你的方法与我声称失败没有什么不同。我们可以从调试输出中推断出$ i可能已经是一个带引号的字符串。我希望这真的很简单。我明天再查。 – duleshi 2014-12-03 14:09:07

+0

我知道这并没有什么不同。这就是为什么我说它应该工作。 – ofrommel 2014-12-03 14:09:59