从 shell 脚本中执行 python 代码

Posted

技术标签:

【中文标题】从 shell 脚本中执行 python 代码【英文标题】:Execute python code from within a shell script 【发布时间】:2019-12-29 16:30:32 【问题描述】:

我想在 shell 脚本中运行一些 python 代码。我不想依赖外部文件来运行。有什么办法吗?

我做了 的谷歌搜索,但没有任何明确的答案。这段代码是我找到的......但它依赖于要运行的外部 python 脚本。我希望所有内容都在一个文件中。

python python_script.py

【问题讨论】:

如果我理解你的问题,你的意思是这样吗?:***.com/questions/3987041/… c:\python27\python.exe c:\somescript.py %* ***.com/questions/4571244/… 取决于您的操作系统和外壳。请相应地标记您的问题。 【参考方案1】:

你可以使用所谓的“这里文档”:

#!/usr/bin/env bash

echo "hello from bash"

python3 - <<'EOF'
print("hello from Python 3")
EOF

第一个 EOF 周围的单引号可防止 shell 脚本中通常的扩展和命令替换。

如果您希望发生这些情况,只需删除它们即可。

【讨论】:

【参考方案2】:

如果你的意思是一个 BASH shell 脚本而不执行任何外部依赖,恐怕你不走运,因为 BASH 只解释它自己的脚本语言。

您的问题有点像问“我可以在没有 JVM 的情况下运行 Java .class 文件”吗?显然,您将始终拥有 JRE/JVM 的外部依赖项。这也是同样的情况,你依赖于外部的 Python 编译器和解释器。

您可以选择内联包含 python 脚本,但它仍然需要 python 可执行文件。

这行得通:

python -c 'print("Hi")'

或者使用 BASH 重定向:

python <<< 'print("Hi")'

【讨论】:

以上是关于从 shell 脚本中执行 python 代码的主要内容,如果未能解决你的问题,请参考以下文章

python如何重新执行脚本?

shell脚本中执行python脚本并接收其返回值的例子

Python:使用参数(变量)执行shell脚本,但在shell脚本中未读取参数

使用 django:从“python manage.py shell”到 python 脚本

shell里面怎么调用,执行python文件

从 php 执行的 python 脚本给出错误