2014-12-03 124 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