Является ли `echo $TEST`, расширяющее звездочку в переменной, ошибкой?

Является ли `echo $TEST`, расширяющее звездочку в переменной, ошибкой?

Это ошибка Bash?

$ mkdir test && cd test && echo "a" > "some.file"
test$ echo '*'
*
test$ TEST=$(echo '*')
test$ echo $TEST
some.file

Почему второй вывод — это разрешение *в (все) имена файлов, а не просто буквальный *вывод? Похоже на ошибку в Bash?

Пробовал на Ubuntu 18.04, bash версии 4.4.19(1)-release. Ожидаю, что на других ОС будет то же самое.

решение1

Нет, это не ошибка. Вы показали, что

echo '*'

произведет литерал *. Поэтому, когда вы подставляете этот вывод, как в следующей команде

TEST=$(echo '*')

он поместит *в переменную $TEST. Затем, когда вы

echo $TEST

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

Вы получите *результат, если скажете

echo "$TEST"

как объясненоздесь, двойные кавычки позволяют расширять переменную, но не допускают расширения глобуса.

Связанный контент