2015-07-21 56 views
0

问题:如何传递一个表达式作为参数?

从总体上看,我正在寻找一个可复制的方式做这样的事情:

command expression_to_be_valuated 

其中expression_to_be_valuated会有什么表现,这一次执行将给予,例如数字,所以我会有

command parameter 

其中参数是一个数字。

现状

我有以下的表达

kill ps aux | grep '[m]ono ./' | awk '{print $2}' 

在哪里,如果你从上面commandkill参考我的解释和expression_to_be_valuatedps aux | grep '[m]ono ./' | awk '{print $2}'

我想这部分是以前评估过:

ps aux | grep '[m]ono ./' | awk '{print $2}' 

但是我试着在它周围有''(我的理解到现在为止意味着“评估此表达式之前”,通常它可以工作,但在这种情况下,我无法使其工作或调用评估它,但它不起作用。

尝试次数:

ps 'aux | grep '[m]ono ./' | awk '{print $2}'' 

回答

1

您可以使用command substitutionps $(command)

ps $(aux | grep '[m]ono ./' | awk '{print $2}') 

$(command)表达式计算command,所以,如果你说ps $(command)ps得到的command输出作为输入。

还要注意grep '[m]ono ./' | awk '{print $2}'可以被挤压到只有awk '/mono .\// {print $2}'


从给定链路:

命令替换允许命令的输出,以取代 命令本身。

+0

非常感谢!所以这是$(),这意味着评估这件事情之前!我会尽快将其标记为答案。然而,要纠正我的问题,我所做的就是杀死$(ps aux | grep'[m] ono ./'| awk'{print $ 2}') – Cher

+1

'aux'是'ps'调用的一部分,不是开头的管道命令“grep”。也不要使用'ps | grep'使用'pgrep'。 –

+1

@CherrysaHerrim很高兴看到它对你有用!另外,请考虑Etan正在评论的内容 - 有趣且有用。 – fedorqui