Конфликт между переменными замещениями и символами CJK в BASH

У меня возникла проблема с заменой переменных в оболочке BASH. Скажем, вы определяете переменную a. Затем команда

    $> echo ${a//[0-4]/}

печатает свое значение со всеми номерами от 0 до 4 удаленных:

    $> a="Hello1265-3World"
    $> echo ${a//[0-4]/}
    Hello65-World

Кажется, что это работает очень хорошо, но давайте взглянем на следующий пример:

    $> b="你1265-3好"
    $> echo ${b//[0-4]/}
    你1265-3好

Подстановка не состоялась: я предполагаю, что это потому, что b содержит символы CJK. Этот вопрос распространяется на все случаи, когда задействованы квадратные скобки. Удивительно, но переменная замена без квадратных скобок отлично работает в обоих случаях:

    $> a="Hello1265-3World"
    $> echo ${a//2/}
    Hello165-3World
    $> b="你1265-3好"
    $> echo ${b//2/}
    你165-3好

Является ли это ошибкой или я что-то упускаю?

Я использую Lubuntu 12.04, terminal is и echo $BASH_VERSION возвращает 4.2.24 (1) -release.

EDIT: Эндрю Джонсон в своем комментарии заявил, что с gnome-terminal 4.2.37 (1) - освобождение команды отлично работает. Интересно, является ли это проблемой lxterminal или ее конкретной версии 4.2.24 (1) -release.

EDIT: Я попробовал это с gnome-terminal на Lubuntu 12.04, но проблема все еще там ...

1
задан 13 April 2017 в 15:23

0 ответов

Другие вопросы по тегам:

Похожие вопросы: