Python 谷歌安卓回购文件是如何工作的?

Python 谷歌安卓回购文件是如何工作的?,python,bash,Python,Bash,引述: 他们如何将bash和python放在一个脚本中并使其运行?我就是这样理解的: 该脚本首先作为shell脚本调用,然后在第23行调用python,因此如果在repo上调用sync命令,它将执行以下操作: """exec" python -E "$0" "$@" """#$magic" 我相信这会变成: exec“python-E”repo“sync”-从-/bin/sh调用python--” 然后将脚本repo作为python脚本调用。您会注意到,所有语法在bash和python中都是合

引述:


他们如何将bash和python放在一个脚本中并使其运行?

我就是这样理解的: 该脚本首先作为shell脚本调用,然后在第23行调用python,因此如果在repo上调用
sync
命令,它将执行以下操作:

"""exec" python -E "$0" "$@" """#$magic"
我相信这会变成: exec“python-E”repo“sync”-从-/bin/sh调用python--” 然后将脚本
repo
作为python脚本调用。您会注意到,所有语法在bash和python中都是合法的,一直到
exec
行。第23行上的三重引号非常漂亮,它们在shell脚本中工作,然后在python中作为文档字符串工作。这是多么棒啊

在python中,开始和结束可以跨多行的docstring。非常粗略地说,这是python帮助系统可以阅读的一种非常特殊的注释。在bash中,我认为双引号与解释器遇到的下一个双引号相匹配。所以前两个引号,引用空字符串,它就会从解释器中消失。在我们的示例中,下一个引号引用了
exec
关键字。最后一组三重引号,
“”“#$magic”
,首先引用空字符串,然后引用
#$magic
参数。由于双引号允许展开变量
$magic
,因此它变成了,
#——从-/bin/sh调用python——
,并作为参数传递


如果使用文本编辑器查看脚本,将语法高亮显示为shell脚本,然后再将其作为python脚本,则更容易看到。这是一种非常聪明的方法,可以启动shell脚本,然后控制python。希望这有帮助

您能详细说明一下三重引号在bash和python中是如何工作的吗?”“在python中开始一个多行引号,它扩展到下一个出现的”“。”。在Bash中,它只是一对空双引号(一个双引号空字符串),与另一个双引号字符串相邻,该字符串一直延伸到下一个双引号。现在,在Python中,字符串只是被忽略的常量,但在Bash中,可以双引号引用命令;因此,删除引号后,““exec”计算为
exec
命令。
"""exec" python -E "$0" "$@" """#$magic"