echo [9876543210] показывает 1 4 5 6 ... почему?

Пожалуйста, объясните, почему 1 4 5 6 отображается для последних четырех эхо-заявлений? Я случайно ударил это случайно, но теперь мне любопытно, почему это происходит.

Эти утверждения работают как ожидалось (для меня).

$ echo [ 9876543210 ]  
[ 9876543210 ]

$ echo [237890]  
[237890]

Эти утверждения эха последовательно отображают 1 4 5 6. Есть ли что-то особенное в этих числах?

$ echo [9876543210]  
1 4 5 6

$ echo [abcd9876543210ghi]  
1 4 5 6

$ echo [-123456-]  
1 4 5 6

$ echo [-7654321-]  
1 4 5 6

Спасибо!

  • Возможный дубликат связан и полезен, но не дублируется. Возможный дубликат - с точки зрения команды rm. Этот вопрос с точки зрения воспринимаемого «странного поведения» команды echo. Основной ответ для них - глобус. Кто-то, кто ищет проблемы с командой echo, не будет легко найти rm, но скорее всего приземлится здесь.
16 голосов | спросил MikeD 27 FebruaryEurope/MoscowbMon, 27 Feb 2017 21:41:23 +0300000000pmMon, 27 Feb 2017 21:41:23 +030017 2017, 21:41:23

1 ответ


32

Открытая скобка [ является специальным символом для оболочки; он открывает алгоритм сопоставления с образцом, который говорит, что «соответствует любому из символов внутри скобок». Поскольку в вашем текущем каталоге есть 4 файла с именами: 1, 4, 5 и 6, когда символы внутри скобок содержат любую из этих цифр, ваша оболочка заменяет соответствие шаблону этим именам файлов. Когда вы используете echo [ 9876543210 ], вы вызываете эхо с тремя параметрами: [, 9876543210 и ]

Вы должны указать параметры своего эха, чтобы предотвратить просмотр оболочки в виде запроса соответствия шаблону.

$ echo '[9876543210]'
[9876543210]

(или удалите файлы с именами 1, 4, 5 и 6 - но это обходное решение, чтобы продемонстрировать поведение, а не исправление).

ответил Jeff Schaller 27 FebruaryEurope/MoscowbMon, 27 Feb 2017 21:55:18 +0300000000pmMon, 27 Feb 2017 21:55:18 +030017 2017, 21:55:18

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132