导出由子流程解析和选择的路径的方法

Way to export path that get resolved and picked by the subprocess

我一直在尝试使用子进程 运行 来自 python 的 ksh 脚本,需要一些帮助,因为环境变量没有被解析,而环境变量正在脚本中使用。关于导出子进程选择路径的正确方法的任何建议。

试图回应路径,但它return与正在解析的值相同

import os
import subprocess as sp

os.environ['b_dir'] = /path/script/
os.environ['data_dir'] = /path/data/

r0 = sp.run(['echo','$b_dir'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print(r0.stdout.decode())
r = sp.run(['ksh','$b_dir/dev/scriptname.ksh'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print(r.stdout.decode())

r0 的输出是 $b_dir

期待: /path/script/

您正在向命令 'echo' 传递一个字符串,例如 echo '$b_dir' 在 bash.

您可以按如下方式进行:

r0 = sp.run(["echo", f"{os.environ.get('$b_dir')}"], stdout=sp.PIPE, stderr=sp.STDOUT) 

os.environ.get('$b_dir') 命令将读取环境变量并将其值作为参数传递给 运行 方法。

或者直接调用运行方法传递路径

r0 = sp.run(["echo", "/my/path/myfile"], stdout=sp.PIPE, stderr=sp.STDOUT)