我正在尝试修改我的 git 远程仓库地址,但我对管道 ( |
) 感到困惑。
两者之间有什么区别?为什么第一个选项不起作用?
# Doesn't work
git remote get-url origin | sed 's/old/new/' | git remote set-url origin
# Works
git remote set-url origin $(git remote get-url origin | sed 's/old/new/')
答案1
答案是git remote set-url
在命令行上需要它的最后一个参数(实际的 URL),不是作为其标准输入。您的第一行(带有管道的行)尝试将 URL 作为标准输入提供。
您的第二行 OTOH 几乎正确地将 URL 作为命令行参数(最后一个)插入到顶级命令中。
1 您忘记了命令替换周围的双引号,以防止此处出现不需要的 split+glob。