管道输出与就地计算之间有什么区别?

管道输出与就地计算之间有什么区别?

我正在尝试修改我的 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。

相关内容