如何在python脚本中设置bash脚本而不是单独的脚本?

时间:2017-06-07 07:16:56

标签: python bash shell environment-variables environ

这是我运行 myscript.sh

中设置的bash脚本的方法
#!/bin/bash
import subprocess
child = subprocess.Popen(['bash', '-c', '/bin/bash myscript.sh'], stdout = subprocess.PIPE)
output=child.communicate()
print(output)

myscript.sh

为什么我这样做是因为我必须运行的bash脚本没有export命令所以我在这里回应。代码吼叫。我知道回声不会设置环境变量,但我只想回显它并获取值,以便回显而不是导出。

#!/bin/bash
source ia_servers
echo $IA_SRV_cs68_64

其中 $ IA_SRV_cs68_64

这是列出变量值的ia_servers文件 它看起来像这样

IA_SRV_cs68_64="ds1 ds2 ds3 ds5 "

这就是变量的含义。设置中的许多其他变量因为时间过长而被淘汰。

TESTED在终端上运作良好:

  • 来源ia_servers
  • 回复IA_SRV_cs68_64

打印所需的值集

问题: 虽然 myscript.sh 正在工作并打印变量。我想要的是我不想创建一个单独的文件,在那里写一个bash脚本来回显myscript.sh中的变量,而是在python中写它。

  

我如何在python中完成它而不是制作它   脚本文件并运行它。

2 个答案:

答案 0 :(得分:0)

这是运行任何类型的脚本或程序的通用方法,其中程序输入嵌入在Python脚本中。

import subprocess
scriptres = subprocess.Popen("/bin/bash", 
                             stdin=subprocess.PIPE,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE).communicate(r'''
# your bash script here
ls
pwd
source whatever
echo $SOMETHING
''')

script_stdout = scriptres[0]
script_stderr = scriptres[1]

答案 1 :(得分:0)

$postedTime = isset($words[6]) && !empty($words[6]) ? $words[6] : '';