导出由子流程解析和选择的路径的方法
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)
我一直在尝试使用子进程 运行 来自 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)