[英]How to execute shell script from Python after passing input parameters
我的JSON文檔jsonStr
有一個shell腳本,可以使用Python子jsonStr
模塊執行該腳本,並且可以正常工作。
以下是我的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"
現在有什么方法可以將變量值從Python腳本傳遞到json文檔中的shell腳本嗎? 這意味着我需要將testing
值傳遞給我的shell腳本,然后在從子流程模塊執行完之后,從shell腳本中打印testing
的值。
這可能嗎?
就像文檔所說的那樣,在env
參數中向子進程提供環境變量。 請注意,提供參數會替換整個環境。 如果您希望現有值可用,則需要提供它們。
試試這個命令:
subprocess.call(j['script', str(var1), str(var2)], shell=True)
你不能用這個嗎?
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中,您可以有一個占位符,並且可以替換該占位符,而不是將變量動態傳遞給它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.