在Python中,如果一个字符串代表一个语句,要执行它我们必须使用eval
.
在 Bash 中,为什么情况不一样呢?
$ cmd="ls"
$ $cmd
a.out company.png
答案1
Python 和 Bash 是完全不同的语言。 Python 的主要目的是执行内部语句,并附加执行外部程序的功能。 shell的主要目的是执行外部程序,添加了一些控制结构和内部命令。 Bash 比原始 shell 有更多的内部功能,但仍然保持兼容性。
shell 的功能之一是您可以定义变量并稍后在命令中扩展它们。基本上,您可以认为 shell 隐式地eval
对每个语句使用类似于 Python 的东西,尽管当然存在差异。
eval
如果正常级别的处理和替换不够并且您需要额外的级别,那么还有一个shell 命令可能有用但也很危险。它评估该行的其余部分并将结果提供给 shell 执行的正常替换。在您更好地理解和实际需要它之前,最好忘记此功能。