簡體   English   中英

如何在python腳本中設置bash腳本,而不是使用單獨的腳本?

[英]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在終端上運行良好:

  • 來源ia_servers
  • 回聲IA_SRV_cs68_64

打印所需的值集

問題:盡管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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM