Двойные кавычки ни в коем случае не являются особенными.Таким образом, переменная TEST
содержит слова "This
, is
, a
, test
, test
, test
и test"
, которые затем сортируются с удалением дубликата как "This
, a
, is
, test
и test"
и, таким образом, оболочка получает (1) echo "This a is test test"
, интерпретирует двойную кавычку как строковые маркеры и выводит This a is test test
(а не This is a test test
см. Место a
).
(1) Полезный совет для отладки такой проблемы, как эта, - установить для переменной SHELL
значение /bin/echo
, чтобы вы могли видеть, что получает оболочка.Например, в результате вы получили бы -c echo "this a is test test"
с Makefile
TEST="this is a test test test test"
SHELL=/bin/echo
all:
@echo $(sort $(TEST))