在python中嵌入Bash脚本而不使用子进程调用
我已经能够使用它将bash脚本嵌入到python中。我今天碰巧浏览了一段python代码,无意中发现了下面这行代码,它也将bash脚本嵌入到python中——使用类似于在python中嵌入Bash脚本而不使用子进程调用,python,bash,Python,Bash,我已经能够使用它将bash脚本嵌入到python中。我今天碰巧浏览了一段python代码,无意中发现了下面这行代码,它也将bash脚本嵌入到python中——使用类似于docstring的构造 #!/bin/bash - ''''echo -n if [[ $0 == "file" ]]; then .. fi ''' 有人能解释一下这种方法吗。这种方法叫什么,可能还有相关的好处。我很明显看到了简单性,但我认为这比那更重要 不,这并没有嵌入到python中,shebang说这是一个bas
docstring
的构造
#!/bin/bash -
''''echo -n
if [[ $0 == "file" ]]; then
..
fi
'''
有人能解释一下这种方法吗。这种方法叫什么,可能还有相关的好处。我很明显看到了简单性,但我认为这比那更重要
''
是''
两次,这只是一个空字符串,没有任何效果'
无效,因为最后一个'
未关闭''
是''
两次,这只是一个空字符串,没有任何效果'
无效,因为最后一个'
未关闭这是一种使文件同时成为有效Python脚本和有效bash脚本的聪明方法。请注意,它不会导致子流程神奇地生成。相反,如果文件是由bash计算的,那么bash脚本将运行,如果文件是由Python计算的,那么bash脚本将被忽略 这很聪明,但一般来说可能不是一个好的软件工程实践。使用单独的脚本通常更有意义 举一个更具体的例子(假设此文件名为“”): 正如您所注意到的,bash将忽略初始引号,并打印“hello from bash”,然后在到达三重引号之前退出。Python将把bash脚本视为字符串,并忽略它,运行下面的Python脚本
$ python polyglot
hello from python
$ bash polyglot
hello from bash
但是,很自然,这通常(更清楚地说)可以重构为两个脚本,每种语言一个。这是一种聪明的方法,可以使文件同时成为有效的Python脚本和有效的bash脚本。请注意,它不会导致子流程神奇地生成。相反,如果文件是由bash计算的,那么bash脚本将运行,如果文件是由Python计算的,那么bash脚本将被忽略 这很聪明,但一般来说可能不是一个好的软件工程实践。使用单独的脚本通常更有意义 举一个更具体的例子(假设此文件名为“”): 正如您所注意到的,bash将忽略初始引号,并打印“hello from bash”,然后在到达三重引号之前退出。Python将把bash脚本视为字符串,并忽略它,运行下面的Python脚本
$ python polyglot
hello from python
$ bash polyglot
hello from bash
但很自然,这通常(更清楚地说)可以重构为两个脚本,每种语言一个。实际上,“”被解析为打开一个docstring,后跟一个文本单引号。是的,但关键是Python可以忽略bash脚本。Python解析是有趣的一点。我知道,但在当前的形式下,这个bash脚本的语法无效-
在寻找匹配的“''
OP”时意外的EOF只是省略了之前的“exit”语句,这在这个模式中很常见。实际上,''被解析为打开一个docstring,后面是一个单引号。是的,但关键是Python可以忽略bash脚本。Python解析是有趣的一点。我知道,但在当前的形式下,这个bash脚本的语法无效-在寻找匹配的`'
OP时,意外的EOF只是省略了前面的“exit”语句,这在这个模式中很常见。