【问题标题】:Run python file from bash, send parameter from bash to py and output the result by echo on bash [duplicate]从bash运行python文件,将参数从bash发送到py并通过bash上的echo输出结果[重复]
【发布时间】:2021-04-18 14:51:15
【问题描述】:

问题与Linux Debian、bash和python3有关。

从 bash 运行 python3 文件,将参数从 bash 发送到 py 并在 bash 上通过 echo 输出结果。

以下是对我有用的示例。这个通过 bash 启动一个 python3 脚本并在终端上获取 python3 脚本的输出。

bash_script.sh

#!/bin/bash
python3 python_script.py

python_script.py #!/usr/bin/env python3

 import random # import the random module
  
# determining the values of the parameters 
mu = 100
sigma = 25
  
print(random.normalvariate(mu, sigma))

我的问题是什么: 如何更改代码,将“mu”和“sigma”的参数从bash发送到python并通过“echo $python_script_output”在bash上输出python结果?

按照不工作的草案寻求解决方案:

bash_script.sh

#!/bin/bash
mu = 100
sigma = 25
python3 python_script.py
echo $python_script_output

python_script.py

#!/usr/bin/env python3 
import random           
print(random.normalvariate(mu, sigma))

【问题讨论】:

  • 1 mu = 100 不会将 100 分配给 $mu。那是mu=1002 Python 不知道 Bash 的变量。 export 他们将它们作为参数传递。
  • 这闻起来有点像XY problem为什么你需要使用 Bash Python?任何一个都可以做任何你想做的事情(但一个可能会更好)。两者都用似乎是自找麻烦。
  • @Biffen,我需要这个样本来解决很多与自我相关的平等问题。我只需要一个在这种方式下工作的解决方案,在其他方式上不需要更短的解决方案。

标签: python python-3.x bash


【解决方案1】:

您希望通过 bash 运行 python 脚本是否有特殊原因?

如果没有,您可以使用内置的python模块sys将参数传递给python脚本并直接在终端上打印结果。

import sys

def func(arg1, arg2):
    # do_somehing
arg1, arg2 = sys.argv[1], sys.argv[2]
print(func(arg1, arg2))

然后就可以直接从bash中使用了

python script_name.py arg1 arg1

【讨论】:

  • 这已经在How to pass a bash variable to Python? 的回答中讨论过了。请参阅How to Answer回答正确提出的问题部分,尤其是关于“之前已被多次询问和回答”的问题的要点。
  • @lllrnr101 如何将您的解决方案用于我询问的脚本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
相关资源
最近更新 更多