【发布时间】:2010-11-17 23:05:49
【问题描述】:
Python 在定义一组要运行的命令方面并不是一门很好的语言。巴什是。但是 Bash 不能在 Windows 上天真地运行。
背景:我正在尝试在 mac/win/linux 上构建一组程序——它们之间建立了依赖关系。类似于 macports 的东西,但应该适用于列出的所有三个平台。
这就需要有一种类似于 shell 的语言,该语言可用于定义为构建/修补/等运行的命令序列。一个特定的程序,例如:
post-destroot {
xinstall -d ${destroot}${prefix}/share/emacs/${version}/leim
delete ${destroot}${prefix}/bin/ctags
delete ${destroot}${prefix}/share/man/man1/ctags.1
if {[variant_isset carbon]} {
global version
delete ${destroot}${prefix}/bin/emacs ${destroot}${prefix}/bin/emacs-${version}
}
}
以上来自emacs Portfile in macports。注意变量、条件、函数的使用......除了指定一个简单的命令列表以按该顺序执行。
虽然语法不是 Python,但实际的执行语义必须使用 subprocess 或其他方式推迟到 Python。简而言之,我应该能够“运行”这样的脚本......但是对于每个命令,都会调用一个指定的钩子函数,该函数实际上运行作为参数传递的任何命令。我希望你能明白。
【问题讨论】:
-
你在这里要求什么?设计建议?一个代码sn-p?请更准确。
-
我不是要代码 sn-p;但是关于如何实现或重用这样的命令解释器的想法(似乎 macports 使用 Tcl)
标签: python shell cross-platform command