Wil*_*den 3 bash regular-expression
我想查看 的输出git status -s
以确定树中是否有任何未跟踪的文件。我尝试了以下测试,但正则表达式不匹配。为什么不?
$ git status -s
## master
M updated-file
?? new-file
$ [[ $(git status -s) =~ ^\?\? ]] || echo "no match"
no match
Run Code Online (Sandbox Code Playgroud)
我还希望能够以相同的方式测试添加/修改/删除的文件。我通常只是^\s*[AMD]
为此目的使用类似的东西,但这也不起作用。是什么赋予了?
您正在匹配整个字符串,而不是字符串的每一行,因此您实际上是##
在该正则表达式中进行测试。
grep
是更好的选择:
if ! git status -s | grep -q '^??'; then
echo "no match"
fi
Run Code Online (Sandbox Code Playgroud)
根据要求,您可以对添加/修改/删除执行相同操作:
git status -s | grep '^ *[AMD]'
Run Code Online (Sandbox Code Playgroud)
您可能还想查看git status --porcelain
(首次出现在 1.7.0 中的选项),它更侧重于解析。
归档时间: |
|
查看次数: |
1209 次 |
最近记录: |