繁体   English   中英

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

[英]bash: pipe-character in variable for command-substitution

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

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

我从ps得到一个错误。

error: garbage option

Usage:
  ps [options]
.....

“ps aux”只能正常 - 但不能使用任何其他管道命令。

谢谢!

使用函数存储管道命令更好更安全:

unset cmd cnt

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

并在命令替换中使用它:

cnt="$(cmd)"

有关在变量中存储命令行的信息,请参阅BASH FAQ

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

cnt=$(eval $cmd)

请使用此命令: -

cmd = ps aux | grep -v grep ps aux | grep -v grep

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

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM