如何将表达式作为参数传递?

时间:2015-07-21 14:00:29

标签: bash

问题:

一般来说,我寻求一种可复制的方式来做这些事情:

command expression_to_be_valuated

其中expression_to_be_valuated将是任何表达式,一旦执行就会给出,例如一个数字,所以我会

command parameter

其中parameter是一个数字。

现状

我有以下表达式

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

如果您从上面command引用我的解释killexpression_to_be_valuatedps aux | grep '[m]ono ./' | awk '{print $2}'

我希望之前评估这部分:

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

然而,我试图围绕它''(据我所知,到目前为止意味着"在#34之前评估此表达式;通常它有效,但在这种情况下我不能使其有效,或在其上调用eval,但它不起作用。

尝试:

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

1 个答案:

答案 0 :(得分:1)

您可以使用command substitution并说ps $( 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}'

从给定的链接:

  

命令替换允许输出命令来替换   命令本身。