我已经能够使用subprocess将bash脚本嵌入到python中。我碰巧今天浏览了一段python代码,偶然发现了下面这行代码,它还将bash脚本嵌入到python中 - 使用与docstring
类似的构造。
#!/bin/bash -
''''echo -n
if [[ $0 == "file" ]]; then
..
fi
'''
有人可以对这种方法有所了解。这种方法叫做什么,也许还有相关的好处。我显然可以看到简洁,但我认为除此之外还有更多。
答案 0 :(得分:3)
这是使文件成为有效的Python脚本和有效的bash脚本的一种有点聪明的方法。请注意,它不会导致神奇地生成子进程。相反,如果文件由bash评估,则将运行bash脚本,如果由Python评估,则将忽略bash脚本。
它很聪明,但可能不是一般的软件工程实践。拥有单独的脚本通常更有意义。
给出一个更具体的例子(比如说这个文件名为" polyglot"):
''''echo hello from bash
exit
'''
print('hello from python')
如您所知,bash将忽略初始引号,并从bash"打印" hello,然后在到达三重引号之前退出。 Python会将bash脚本视为字符串,并忽略它,运行下面的Python脚本。
$ python polyglot
hello from python
$ bash polyglot
hello from bash
但很自然,这通常(并且更明确地)可以重构为两个脚本,每种语言一个。
答案 1 :(得分:2)
''''
是''
两次,这只是一个空字符串,它没有任何效果。'''
无效,因为最后'
未关闭。