当我在 Ubuntu 终端中运行这两个命令时,我得到一个变量值
<强>1。源脚本.sh
<强>2。 echo $变量名
其中 scripts.sh 包含正在定义的变量,然后在第 2 步中使用 echo 调用。
我如何在 python 脚本中完成相同的操作: 我试过下面的代码
#!/bin/bash
import subprocess
command=['bash','-c','source ia_servers']
cmdout = subprocess.Popen(command, stdout=subprocess.PIPE)
filtercommand=['bash','-c','echo $IA_SRV_cs68_64']
filtered = subprocess.Popen(filtercommand, stdin=cmdout.stdout, stdout=subprocess.PIPE)
output, err = filtered.communicate()
print(output)
描述: 我首先使用子流程运行第 1 步,并将其结果作为输入提供给第 2 步。我知道第一步不会有任何输出。但是我如何在 python 中完成这个。
还是我走错了路。如果有其他方法可以解决这个问题
主要目标:
我的目的是将 bash 脚本中设置的变量值获取到我的 python 代码中。
最佳答案
每个子进程调用都会生成它自己的 shell 实例。因此,当 shell 退出时,第一个子进程中源代码中设置的任何 shell 变量都会立即丢失。访问这些变量的唯一方法是在调用 source 时立即从同一个子进程调用中打印它们:
import subprocess
filtercommand=['bash','-c','source ia_servers; echo $IA_SRV_cs68_64']
filtered = subprocess.Popen(filtercommand, stdout=subprocess.PIPE)
output, err = filtered.communicate()
print(output)
关于python - 如何在 python 脚本中完成多个 bash 脚本命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44411926/