我正在学习如何使用powershell制作一个在git命令输出上运行的脚本。
对于一次场景,我需要解析git status --porcelain
并查看是否有任何行以某组字母开头。到目前为止,我有:
if (git status --porcelain | Where-Object { $_ -match '^??|DD|AU|UD|UA|DU|AA|UU' }) {
#do work
}
问题是git status --porcelain
的输出没有命名列,所以我不能只访问 $_。 以查看其中是否有任何与提供的正则表达式匹配。
是否可以在每行上匹配正则表达式,或者拆分行并匹配每行上的正则表达式?我不确定我应该如何进行
您可以逐行迭代 git 命令行的输出。如果任何线条与您的模式匹配,请将变量设置为1
:
$found = 0;
ForEach($line in $(git status --porcelain)){ if ($line -match '^?? |DD|AU|UD|UA|DU|AA|UU') { $found = 1 } }
if ($found) {Write-Host "Found!"}
我在模式中的??
和文件名之间添加了一个空格。