У меня есть аргументы, подобные приведенному ниже, которые я передаю скрипту powershell
-arg1 -abc -def -arg2 -ghi -jkl -arg3 -123 -234
Теперь мне нужно извлечь три строки без пробелов
string 1: "-abc -def"
string 2: "-ghi -jkl"
string 3: "-123 -234"
Я подумал, что это выражение может сделать это. Но, похоже, это не работает.
$args -match '-arg1(?'arg1'.*?) -arg3(?'arg3'.*?) -arg3(?'arg3'.*)'.
Это должно вернуть $ match ['arg1'] и т. Д. Так что же не так в приведенном выше выражении. Почему я получаю ошибку, как показано ниже
runScript.ps1 -arg1 -abc -def -arg2 -ghi -jkl -arg3 -123 -234
Unexpected token 'arg1'.*?) -arg2
(?'arg2'.*?) -arg3 (?'arg3'.*)'' in
expression or statement. At
G:\powershell\tools\powershell\runTest.ps1:1
char:71
+ $args -match '-arg1 (?'arg1'.*?) -arg2 (?'arg2'.*?) -arg3 (?'arg3'.*)' <<<<
+ CategoryInfo : ParserError: (arg1'.*?) -arg2...g3
(?'arg3'.*)':String) [],
ParseException
+ FullyQualifiedErrorId : UnexpectedToken
а также второй вопрос: как мне сделать arg1
или arg2
или arg3
необязательным?
Аргумент к скрипту может быть
-arg2 -def -ghi.
Я возьму некоторые значения по умолчанию для arg(1|2|3)
, которые не упомянуты.
Спасибо