这行得通
$ x='grep a'
$ echo ab | $x
ab
这不是-
$ x='grep a | grep b'
$ echo ab | $x
grep: |: No such file or directory
grep: grep: No such file or directory
grep: b: No such file or directory
在后一种情况下,grep a | grep b
它被视为单个命令,即 grep a \| grep b
。
我如何在不做修改的情况下使第二个示例工作x
?
当您要运行包含代码的变量时,您通常会需要使用该命令eval
。这将扩展变量的内容,以便可以执行它们。
$ x='grep a | grep b'
$ echo ab | eval "$x"
ab
不过,通常不鼓励使用eval,因此请谨慎使用,有关更多示例,请参见标题为:Eval命令和安全性问题的BashFAQ 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句