python - 如何在 python 脚本中完成多个 bash 脚本命令

标签 python linux bash shell environment-variables

当我在 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/

相关文章:

Python 正则表达式在标题之间查找特定文本

java.util.date 的值自己改变了

python - 在 python 3.1 中读取数据文件

linux - 如何扩展以破折号 (-) 开头的文件名

python - 使 python 排序/比较与 GNU 排序相同

linux - 在 BASH 中使用 mv 将时间戳添加到文件名

python - 如何将符号放入列表

python mysql插入浮点变量错误

python - 获取 CSV 文件中特定范围的数据 (Python)

linux - 关于linux服务器时区