2017-03-31 54 views
2

我需要执行前一个命令的结果,但我不知道如何处理。执行前一个命令行的输出

我有第一个命令返回一个指令登录到服务器,然后我想执行它之后。

我先命令返回:搬运工登录...

例如:

> my-first-comnand | execute the result of my-first-command

回答

1

这应该这样做我相信。

my-first-command | bash

+0

Thanks Hexagenic,它的工作原理我们可以做到这一点**我的第一个命令| sh **也 – Victor

+0

@ user7544861,那些是不一样的''sh'比'bash'具有更多的限制性语言。 ttps://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html,即使'/ bin/sh'是硬链接到'bash',这个地方也会有所不同 - 如果你的'/ bin/sh'由不同的shell如'ash'或'dash'提供,将会有更多的变化。 –

1

我用$(!!)这一点。正如Charles指出的那样,这可能不是每个人都想做的事,但它对我来说很合适,并且比其他答案更适合我的目的。

$ find ./ -type f -name "some.sh" 
$ $(!!) 

!!是保持最后的命令,并投入$()使其得到执行的变量。

这对于在输出上采取其他操作也很有用,因为$()被视为变量。

+0

这是重新运行**先前的命令。如果速度慢/价格昂贵,可能需要很长时间,并且第二次输出可能不完全相同。 –

+0

它在解析命令方面也有所不同。如果输出是'printf'%s \ n'“foo bar”',那么将其输入到shell或使用'eval'运行的结果与将其无引号扩展的结果不同 - 前两个选项会打印一行'foo bar',后者打印一行字符串'“”foo'和第二行字符串'“”bar“'。参见[BashFAQ#50](http://mywiki.wooledge.org/BashFAQ/050)。 –

+0

非常好的一点!我个人更喜欢重新运行命令,因为我一般都想在运行之前检查输出。根据扩展的不同,我希望我们可以想象一个不同的解决方案一个这样的用例, –