[英]how to set the bash scripts with in the python scripts rather than having separate scripts?
這就是我運行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命令,所以我在這里回顯。 代碼波紋管。 我知道echo不會設置環境變量,但我只想回顯它並獲取值,所以echo而不是導出。
#!/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在終端上運行良好:
打印所需的值集
問題:盡管myscript.sh正在運行並打印變量。 我想要的是我不想創建一個單獨的文件,在該腳本中編寫bash腳本以像myscript.sh中那樣回顯該變量,而是在python中編寫它。
我如何在python中完成它,而不是制作腳本文件並運行它。
這是一種運行任何類型的腳本或程序的通用方法,其中程序輸入嵌入在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]
# i assume there is a file by name `ia_servers` with variable IA_SRV_cs68_64="ds1 ds2 ds3 ds5 "
import imp
ia_servers =imp.load_source('ia_servers', 'path to `ia_servers` file')
print ia_servers.IA_SRV_cs68_64 # this should print `ds1 ds2 ds3 ds5`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.