Shell/Bash - 通过变量将输出到另一个脚本的输入中



>通常我会将内容分解为单独的操作,然后将输出复制并粘贴到另一个输入中:

$ which git
/usr/local/bin/git
$ sudo mv git-credential-osxkeychain /usr/local/bin/git

有什么快速的技巧可以将输出输入吗?像这样: $echo which wget | sudo mv git-credential-osxkeychain

set -vx
myGit=$(which git)
gitDir=${myGit#/git} ; gitDir=${gitDir#/bin}/git
echo sudo mv git-credential-osxkeychain ${gitDir}

删除最后一行的set -vxecho,当您确定这将执行所需的操作时。

也许可以减少所需的击键次数,但我认为这个版本更容易理解正在使用什么技术,以及它们是如何工作的。

希斯

使用命令替换$(command)

sudo mv git-credential-osxkeychain $(which git)

这会将命令替换为其输出。您可以在 http://tldp.org/LDP/abs/html/commandsub.html 中找到有关它的所有信息

答案是Chirlo和shellter所说的。

为什么$echo which wget | sudo mv git-credential-osxkeychain不起作用是因为管道将标准输出从上一个命令重定向到下一个命令的 stdin。在这种情况下,move 不会从 stdin(标准)获取输入。

奇怪的是,which git回来

/usr/local/bin/git

但你正在git-credential-osxkeychain移动到

/usr/local/git/bin/

这两者不匹配。有错别字什么的吗?

如果要使用管道语法,则应查看xargs .

相关内容

  • 没有找到相关文章

最新更新