确定shell脚本将执行的所有命令的最佳方法是什么?

时间:2013-12-02 14:36:44

标签: shell parsing sh

我希望能够解析shell脚本并返回它可能执行的命令集(不包括iffor之类的shell关键字),包括由管道提供的所有命令以及反引号中包含的所有命令。

采用这种方法的合适方法是什么?我正在考虑正则表达式,但这可能还不够。但我不知道足够的解析理论来正确解决这个问题。

编辑:感谢目前为止的回复。我看到外部输入在确定这个问题时会是一个问题。如果我们将这个从分析中排除,那么在这种情况下它是否是一个合理的任务呢?

2 个答案:

答案 0 :(得分:1)

你不能或者说不同:每个命令都可能被执行。

这是一个示例脚本。

$(cat somerandomfile)

它会做什么?答案取决于somerandomfile内的内容。要确定可能执行的命令集,您必须评估整个环境(基本上每个时钟周期都会发生变化)。

答案 1 :(得分:0)

假设你有程序 X 来回答shell脚本 Y 使用命令 Z 的问题。然后我们可以构造执行任何程序的shell脚本 Y',并在完成后调用命令 Z 。因此,您要求的假设程序 X 解决了不可判定的Halting Problem