bash:用于命令替换的变量中的pipe-character

时间:2017-05-03 06:41:03

标签: linux bash

可以请某人解释,为什么这不起作用?

#!/bin/bash
cmd="ps aux | grep -v grep"
cnt=$($cmd)

我从ps收到错误。

error: garbage option

Usage:
  ps [options]
.....

“ps aux”只会没问题 - 但不能使用任何其他管道命令。

谢谢!

3 个答案:

答案 0 :(得分:4)

使用函数将管道命令存储为:

更好更安全

取消设置cmd cnt

doc.Body.InnerText.Contains("somthing to search for")

并在命令替换中使用它:

cmd() {
   ps aux | grep -v grep
}

See BASH FAQ on storing command line in a variable

答案 1 :(得分:1)

要执行变量$cmd的内容,您必须使用eval

cnt=$(eval $cmd)

答案 2 :(得分:-1)

请使用此命令: -

cmd = ps aux | grep -v grep

当我们想要使用其他命令的o / p时,我们需要使用actute(`)而不是双引号(")

由于