make#!/ usr / bin / env python
这个问题在这里已经有了答案:
我会使用以下内容:
#!/bin/sh
"""true"
exec python -u "$0" "$@"
"""
# python code goes here
行"""true"
将被sh
解析为true
,因为它由一个空的""
字符串和后面的"true"
。 由于true
是无操作命令,因此它将被有效忽略,并且以下行将执行Python解释器。
另一方面,Python将非常不同地解析"""true"
行,因为打开一个以true"
开头的三引号字符串,并且在下面两行关闭。由于该字符串不用于任何事情,Python解释器将有效地忽略启动Python的shell代码片段,这是"""xxx"
解释中的差异,它允许Python和sh
代码在同一个脚本中共存。
对于一个简单的测试,附加如下内容:
import sys
print "hello!", sys.argv
给定一个合理的sh
实现(并考虑到启动Python的时间),这应该不会比使用env
慢得多。