背景:
我正在尝试从本地分支过滤特定的GIT分支。因此,我正在使用git branch --all
。
Powershell特定问题:
我正在通过Where-Object
执行管道过滤,并想确保管道中仅返回一个对象而不是数组。
例如:
$branch = Invoke-Expression "git branch --all" | % { $_.Trim('*').Trim() | ? { $_ -match "MySpecificBranchRegex" }
如果我弄乱了我的特定过滤器正则表达式$branch
可能是数组而不是string
。
是否有一种优雅的方法来确保仅返回一个字符串。我不喜欢的可能解决方案:
Select-Object -First 1
谢谢。
答案 0 :(得分:2)
好吧Select-Object -First 1
是恕我直言的完美解决方案,但是您可以通过强制其始终返回数组来扭转它:
$branches = @(Invoke-Expression "git branch --all" | % { $_.Trim('*').Trim() | ? { $_ -match "MySpecificBranchRegex" })
if ($branches.Count -ne 1)
{
throw "Something went wrong..."
}
答案 1 :(得分:0)
$result = git branch --all | where { $_ -match 'MySpecificBranchRegex' }
$result.count
我不会在上面使用findstr(甚至带引号)而不是在哪里。 / i不区分大小写。
$result = git branch --all | findstr /i MySpecificBranchRegex