如果我这样做:
echo From ssh://azeaze@azaz.git | grep -oh From.* | grep -oh ssh.*git
我得到例外,即:
ssh://azeaze@azaz.git
但如果我这样做:
git ls-remote | grep -oh From.* | grep -oh ssh.*git
我得到以下输出:
From ssh://azeaze@azaz.git
为什么?
"from"行转到stderr,因此grep忽略了它。将 stderr 重定向到 stdout 以通过管道将其传输到 grep:
git ls-remote 2>&1 | grep -o 'From.*' | grep -o 'ssh.*git'
细微更改:在 grreping stdin(标准(时不需要-h
。引用用于防止 shell 扩展通配符的模式。