如何将变量(字符串)从 python 传递到 bash 脚本,然后回显它?
How do I pass a variable (string) to a bash script from python and later echo it?
我在 spyder3 上写了一个脚本,它通过函数 'subprocess.call' 调用一个 bash 文件并传递(或应该这样做)一个变量。问题是,不熟悉 bash 编码,我不知道如何 import/read 这个变量和(例如)打印它或回显它。
这是我在 spyder 上的代码行:
variable='test'
subprocess.call(['./path/bash_file.sh',variable])
在 bash 文件上:
#!/bin/sh
echo variable
但显然缺少某些东西,在 bash 文件中至少(?)。
将变量作为参数或环境变量传递给 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: "
echo "arg2: "
echo "env arg: ${foo}"
注意 /bin/sh
和 /bin/bash
是不同的,但实际上 bash
有一些额外的功能,这些功能很方便,但不会这里真的很重要
Bash 文件:
#!/bin/sh
echo ""
Python 文件:
import subprocess
path_to_bash_file = 'path_to_bash_file'
arg_1 = 10
subprocess.check_call([path_to_bash_file, str(arg_1)])
我在 spyder3 上写了一个脚本,它通过函数 'subprocess.call' 调用一个 bash 文件并传递(或应该这样做)一个变量。问题是,不熟悉 bash 编码,我不知道如何 import/read 这个变量和(例如)打印它或回显它。 这是我在 spyder 上的代码行:
variable='test'
subprocess.call(['./path/bash_file.sh',variable])
在 bash 文件上:
#!/bin/sh
echo variable
但显然缺少某些东西,在 bash 文件中至少(?)。
将变量作为参数或环境变量传递给 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: "
echo "arg2: "
echo "env arg: ${foo}"
注意 /bin/sh
和 /bin/bash
是不同的,但实际上 bash
有一些额外的功能,这些功能很方便,但不会这里真的很重要
Bash 文件:
#!/bin/sh
echo ""
Python 文件:
import subprocess
path_to_bash_file = 'path_to_bash_file'
arg_1 = 10
subprocess.check_call([path_to_bash_file, str(arg_1)])