Сопоставление подстроки, начинающейся со специальных символов без использования внешних команд

Я хотел бы функцию, abc123, которая называется:

abc123 -std=c++17 -Wall -lstdc++ -lpthread -o xxx xxx.cpp yyy.cpp

Я хотел бы собрать все подстроки, начинающиеся с "-l" в аргументах.

Вот то, с чем я сталкиваюсь:

%> echo (string match "l*" (string split " " "std=c++17 Wall lstdc++ lpthread o xxx xxx.cpp"))
%> lstdc++ lpthread

Это отлично. Но следующее приведет к ошибке, так как гифоны интерпретируются как опции:

echo (string match "-l*" (string split " " "-std=c++17 -Wall -lstdc++ -lpthread -o xxx xxx.cpp"))

1 ответ

Решение

Вам просто нужно добавить -- отделить параметры от аргументов:

string match -- "-l*" (string split -- " " "-std=c++17 -Wall -lstdc++ -lpthread -o xxx xxx.cpp")
# ...........^^.....................^^
-lstdc++
-lpthread
Другие вопросы по тегам