在不使用外部命令的情况下匹配以特殊字符开头的子字符串
matching substring beginning with special characters without using external commands
我想要一个函数 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"))
您只需添加 --
以将选项与参数分开:
string match -- "-l*" (string split -- " " "-std=c++17 -Wall -lstdc++ -lpthread -o xxx xxx.cpp")
# ...........^^.....................^^
-lstdc++
-lpthread
我想要一个函数 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"))
您只需添加 --
以将选项与参数分开:
string match -- "-l*" (string split -- " " "-std=c++17 -Wall -lstdc++ -lpthread -o xxx xxx.cpp")
# ...........^^.....................^^
-lstdc++
-lpthread