linux - 如何将命令的一部分作为变量 bash 传递?

标签 linux bash

a="grep ssh | grep -v grep"
ps -ef | $a | awk '{print $2}'

我怎样才能完成上述工作?我有一个部分,我不仅需要传递 grep 术语,而且可能传递多个 grep 术语,这意味着我需要将“term1 | grep term2”作为变量传递。

编辑:

下面的 another.anon.coward 回答对我来说非常有效。谢谢楼主!

最佳答案

改为创建一个函数:

a() {
    grep ssh | grep -v grep
}
ps -ef | a | awk '{print $2}'

另一种解决方案是使用 eval,但除非经过适当清理,否则它是不安全的,因此不推荐使用。

a="grep ssh | grep -v grep"
ps -ef | eval "$a" | awk '{print $2}'

关于linux - 如何将命令的一部分作为变量 bash 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987662/

相关文章:

c - 我什么时候应该提供 #defined 宏来在 Linux 内核中声明或初始化变量?

linux - 在 bash 中使用 IFS

linux - 我可以在已编译的二进制文件中更改 'rpath' 吗?

linux - 使用 youtube-dl 和 mplayer 的 YouTube 视频流脚本出现 "Unknown option on the command line: -gf"错误的终端

linux - 为什么 Bash 变量在 if 语句内为空,但在 if 语句外却不为空?

linux - 列出基于 ":"分隔符的 uniq 行

linux - 显示文件中的最新日志条目 - Linux

bash - 如何检查环境变量是否存在并获取其值?

python - 在 python 中转义 bash 命令的最佳方法是什么?

linux - 最常用IP地址bash脚本的Apache访问日志