我们是否需要评估一个字符串才能将其作为命令执行?

我们是否需要评估一个字符串才能将其作为命令执行?

在Python中,如果一个字符串代表一个语句,要执行它我们必须使用eval.

在 Bash 中,为什么情况不一样呢?

$ cmd="ls"
$ $cmd
 a.out  company.png

答案1

Python 和 Bash 是完全不同的语言。 Python 的主要目的是执行内部语句,并附加执行外部程序的功能。 shell的主要目的是执行外部程序,添加了一些控制结构和内部命令。 Bash 比原始 shell 有更多的内部功能,但仍然保持兼容性。

shell 的功能之一是您可以定义变量并稍后在命令中扩展它们。基本上,您可以认为 shell 隐式地eval对每个语句使用类似于 Python 的东西,尽管当然存在差异。

eval如果正常级别的处理和替换不够并且您需要额外的级别,那么还有一个shell 命令可能有用但也很危险。它评估该行的其余部分并将结果提供给 shell 执行的正常替换。在您更好地理解和实际需要它之前,最好忘记此功能。

相关内容