/ / Shell: друкувати слово unicode у змінній - linux, shell, unicode

Shell: друк unicode слова в змінній - linux, shell, unicode

Я вже знаю, що можу використовувати щось подібне echo -ne "xe4xb8xadxe6x96x87" для друку слів unicode.
Але це жорстко закодовано. Як я можу використовувати його для змінної?

Ось моя скрипт:

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

Вихід:

поточне слово: (xe4xb8xadxe6x96x87)

Пряме використання echo -ne $i не працює.

PS: Якщо вам цікаво, чому парам вводу скрипту такий дивний, він з'явився зі скрипту Perl CGI. Можливо, сценарій Perl недостатньо написаний, але я не хочу заглиблюватися в підтримку Unicode Perl CGI зараз.

Відповіді:

1 для відповіді № 1

Він повинен працювати з Bash і echo -e. Просто переконайтеся, що ви дійсно використовуєте Bash (а не, наприклад, на Ubuntu Linux, оболонку тире):

$ cat script
#!/bin/bash
foo="xe4xb8xadxe6x96x87"
echo -e "$foo"

$ ./script
中文

Також переконайтесь, що ваше середовище (локаль) налаштоване на використання utf-8, наприклад, з LANG=en_US.utf-8 або інший код країни.