【问题标题】:How do I pass a variable (string) to a bash script from python and later echo it?如何将变量(字符串)从 python 传递给 bash 脚本,然后回显它?
【发布时间】:2021-09-22 13:36:34
【问题描述】:

我在 spyder3 上编写了一个脚本,它通过函数 'subprocess.call' 调用一个 bash 文件并传递(或应该这样做)一个变量。问题是,不熟悉 bash 编码,我不知道如何导入/读取此变量并(例如)打印或回显它。 这是我在 spyder 上的代码行:

variable='test'
subprocess.call(['./path/bash_file.sh',variable])

在 bash 文件上:

#!/bin/sh
echo variable

但显然,至少在 bash 文件中缺少某些内容(?)。

【问题讨论】:

    标签: python bash variables subprocess


    【解决方案1】:

    将变量作为参数或环境变量传递给 bash 脚本

    p = subprocess.Popen(
        ("/bin/bash", "script.sh", arg1, arg2),
        ...
    )
    out, err = p.communicate()
    
    custom_env = os.environ.copy()  # if you want info from wrapping env
    custom_env["foo"] = arg3        # this is just a dictionary
    p = subprocess.Popen(
        ("/bin/bash", "script.sh"),
        env=custom_env,
        ...
    )
    

    #!/bin/bash
    echo "arg1: $1"
    echo "arg2: $2"
    echo "env arg: ${foo}"
    

    注意 /bin/sh/bin/bash 是不同的,但实际上bash 有一些额外的功能很方便,在这里并不重要

    【讨论】:

      【解决方案2】:

      bash 文件:

      #!/bin/sh
      
      echo "$1"
      

      Python 文件:

      import subprocess
      
      path_to_bash_file = 'path_to_bash_file'
      
      arg_1 = 10
      
      subprocess.check_call([path_to_bash_file, str(arg_1)])
      

      【讨论】:

        猜你喜欢
        • 2012-12-03
        • 1970-01-01
        • 2016-09-15
        • 2020-06-16
        • 2018-11-28
        • 1970-01-01
        • 2020-05-20
        • 2016-11-13
        相关资源
        最近更新 更多