我有這樣的一個的論點下面我傳遞給PowerShell腳本中提取字符串
-arg1 -abc -def -arg2 -ghi -jkl -arg3 -123 -234
現在我需要沒有任何空白
string 1: "-abc -def"
string 2: "-ghi -jkl"
string 3: "-123 -234"
提取三個字符串之間的文本Powershell的正則表達式的幫助下,我認爲這個表達可以做到這一點。但這似乎並不奏效。
$args -match '-arg1(?'arg1'.*?) -arg3(?'arg3'.*?) -arg3(?'arg3'.*)'.
這應該返回$ matches ['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)
。
感謝
如果你像'runScript.ps1 -arg1 -abc -def -arg2 -ghi -jkl -arg3 -123 -234'那樣運行腳本,這意味着你可以指定參數$ arg1,$ abc,$ def,$ arg2, ....你能顯示腳本的param(..)部分嗎? – stej 2010-06-04 06:25:01
在腳本中,我使用$ args作爲參數調用外部exe文件。這個exe會被這些-arg1 -abc -def參數正確調用。現在問題是我需要調用三個不同的exe文件,每個文件都帶有參數-arg1,-arg2 .. etc – excray 2010-06-04 08:42:56