linux - 如何让bash知道|是一个管道而不是一个字符串

标签 linux bash

嗨,我的问题很简单。我想在命令提示符下执行此操作。

var="ls | cat"
$var

现在我知道当我尝试手动执行此操作

ls | cat

Bash 需要 |作为一件特殊的事情。我不知道它怎么叫,我知道|它被称为管道,但我的意思是 bash 需要 |作为......并且实际上制作了一个管道。我还认为,当我尝试执行 $var bash 时,实际上需要 |作为字符串而不是管道。好吧,我的问题是如何让 bash 实现这一点 |实际上是一个管道而不是字符串。谢谢,我希望我清楚我的观点。

最佳答案

简单的解决方案:使用eval:

var="ls | cat"
eval $var

bash 解释 eval 的参数,就好像您在命令行中键入了该参数一样。

当然,请记住对用户输入使用 eval 的安全风险,以防您的程序出现问题。

关于linux - 如何让bash知道|是一个管道而不是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717897/

相关文章:

linux - 减少汇编指令数

c - 如何在 Linux 内核中进行分析或使用 perf_event*.[hc] 框架?

java - 如何在 Ubuntu 15.04 上的 Tomcat 上更新 JAVA_HOME/JRE_HOME?

bash - subl在终端中工作,但在git中不是默认编辑器

将文件从一个包含大量文件的目录移动到一个月文件夹的 Bash 脚本

c - 对于 Linux,如何使用系统调用终止一个 session (具有相同 SID)中的所有进程?

linux - Linux 上的 Jetty 不会被服务脚本停止

linux - pgrep defunct 进程重启服务

python - Pip Install 没有安装到正确的目录?

windows - 获取目录大小和磁盘大小的最快方法