2013-12-24 6 views
0

У меня есть сценарий оболочки в моем документе JSON jsonStr, который я могу выполнить с помощью модуля подпроцесса Python, и он отлично работает.Как выполнить сценарий оболочки из Python после прохождения входных параметров

Ниже мой сценарий Python, который работает отлично, если я выполнить скрипт без прохождения ничего -

import subprocess 
import json 

testing = "HelloWorld" 

jsonStr = '{"script":"#!/bin/bash \\n STRING=\'Hello World\' \\n echo $STRING \\n"}' 

j = json.loads(jsonStr) 

print "start" 
subprocess.call(j['script'], shell=True) 
print "end" 

Теперь есть ли способ передать значение переменной в мой сценарий оболочки в JSon документа из Python скрипт? Значение Мне нужно передать значение testing моему сценарию оболочки, а затем распечатать из сценария оболочки значение testing после того, как он будет выполнен из модуля подпроцесса.

Это можно сделать?

ответ

0

Разве вы не можете использовать это?

import subprocess 
import json 

testing = "HelloWorld" 

jsonStr = '{"script":"#!/bin/bash \\n STRING=\'%VP%\' \\n echo $STRING \\n"}'.replace('%VP%', testing) 

j = json.loads(jsonStr) 

print "start" 
subprocess.call(j['script'], shell=True) 
print "end" 

В JSON можно иметь заполнитель, и вы можете заменить этот заполнитель вместо того, чтобы передать переменную в динамически.

0

Как говорят the docs, укажите переменные среды поставки в подпроцесс в аргументе env. Обратите внимание, что предоставление аргумента заменяет всю среду ; вам нужно будет предоставить существующие значения, если вы хотите, чтобы они были доступны.

+0

Спасибо за предложение. Можете ли вы представить простой пример на моем примере? Это поможет мне лучше понять. Я немного ржавый в сценариях Python и bash. –

+0

'subprocess.call ('echo' $ foo" ', env = {' foo ':' 42 '}, shell = True) ' –

+0

Извините .. :(еще нет способный понять. Как я буду использовать это в моем коде на Python. –

0

Попробуйте эту команду:

subprocess.call(j['script', str(var1), str(var2)], shell=True) 
+0

Что такое var1 и var2 здесь? Можете ли вы представить полный пример? –

+0

Это комментарий, а не ответ. –

+0

@ssh subprocess.call (j ['script', testing], shell = True) – arun

Смежные вопросы