Сопоставление подстроки, начинающейся со специальных символов без использования внешних команд
Я хотел бы функцию, 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