【问题标题】:how to pass an argument from python code to bash script?如何将参数从 python 代码传递给 bash 脚本?
【发布时间】:2019-12-20 15:04:29
【问题描述】:

我有一个 python 代码,其中一开始它需要一个字符串变量,比如来自用户的“element_name”,并基于此字符串构建一些子文件夹,并且此代码创建的一些输出文件移动到这些文件夹。

另一方面,我有一个 bash 脚本,其中一些代码应该在用 python 代码创建的子文件夹中运行。

任何帮助如何在 bash 中引入这些文件夹?如何将“element_name”从 python 传递给 bash?

在python代码“a.py”中我试过了

first = subprocess.Popen(['/bin/echo', element_name], stdout=subprocess.PIPE)

second = subprocess.Popen(['bash', 'path/to/script', '--args'], stdin=first.stdout)

然后在 bash 中

source a.py
echo $element_name 

但它不起作用。

【问题讨论】:

    标签: python bash arguments


    【解决方案1】:

    从你的问题中不清楚你的脚本中有什么,但我猜

    subprocess.run(['/bin/bash', 'path/to/script', '--args', element_name])
    

    正在做你想做的事,将element_name 的值作为参数传递给script

    【讨论】:

    • 另外,source a.py 将尝试将 a.py 作为 shell 脚本而不是 python 运行。如果你想将 element_name 打印到控制台,你可以在 a.py 中使用 print() 语句来完成。如果你想在 shell 中捕获它,你可以使用FOO=$(./a.py) 将输出分配给一个变量。但是,请确保脚本首先可以使用 chmod +x a.py 执行
    【解决方案2】:

    我找到了办法。我所做的是将参数传递到 bash 文件中,然后将此 bash 文件作为源导入到我的主 bash 文件中。现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多