嗨,我的问题很简单。我想在命令提示符下执行此操作。
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/