如何从bash脚本中执行多行Python代码?

27 浏览
0 Comments

如何从bash脚本中执行多行Python代码?

我需要扩展一个shell脚本(bash)。由于我更熟悉Python,我想通过编写几行Python代码来实现,这些代码依赖于shell脚本中的变量。添加额外的Python文件不是一个选择。

result=`python -c "import stuff; print('all $code in one very long line')"` 

不太易读。

我更喜欢将我的Python代码指定为多行字符串,然后执行它。

0
0 Comments

在这个问题中,问题的原因是需要从bash脚本中执行多行Python代码,并且将输出的结果保存到一个变量中。解决方法是将Python代码作为字符串保存在一个变量中,然后使用python3 -c命令来执行该代码,并将输出保存到另一个变量中。

下面是解决方法的具体实现:

#!/bin/bash
# 一些bash代码
END_VALUE=10
PYTHON_CODE=$(cat <

在这个解决方法中,我们使用cat命令将Python代码作为字符串存储在PYTHON_CODE变量中。然后,我们使用python3 -c命令来执行PYTHON_CODE,并将结果保存在res变量中。最后,我们使用echo命令打印出res的值。

这种解决方法的好处是它不会阻塞stdin

0
0 Comments

如何从bash脚本中执行多行的Python代码?

有时候我们需要在bash脚本中执行多行的Python代码。然而,直接将多行代码写在脚本中会导致语法错误。那么,我们应该如何解决这个问题呢?

一种解决方法是使用here-doc。Here-doc是一种在shell脚本中输入多行文本的方法。我们可以使用here-doc来执行多行的Python代码。以下是使用here-doc执行多行Python代码的示例:

result=$(python <

在这个示例中,我们使用了here-doc的语法来将多行Python代码嵌入到bash脚本中。首先,我们将Python代码包含在`$(python <

如果我们不需要返回值,是否可以省略"$("?

是的,如果我们不需要返回值,我们可以直接使用here-doc的语法来执行多行Python代码。这只是here-doc的正常用法。以下是省略"$("的示例:

python <

在这个示例中,我们省略了`result=$(...)`的部分,直接使用here-doc的语法来执行多行Python代码。当我们执行这个脚本时,Python代码会被传递给Python解释器执行,而不会将结果赋值给任何变量。

通过使用here-doc的语法,我们可以在bash脚本中执行多行的Python代码。这种方法非常方便,特别是当我们需要在脚本中执行一些复杂的Python代码时。同时,如果我们不需要返回值,我们可以直接使用here-doc来执行多行Python代码。

0