我有一个shell脚本(test.sh),我在这里使用bash数组 –
#!/bin/bash ... echo $1 echo $2 PARTITION=(0 3 5 7 9) for el in "${PARTITION[@]}" do echo "$el" done ...
到目前为止,我已经硬编码PARTITION数组的值在我的shell脚本,你可以看到上面..
现在我有一个如下所述的Python脚本,我通过传递某些参数(如hello1
和hello2
来调用test.sh shell脚本,这些参数是$1
和$2
。 现在,我如何将我的Python脚本中的jj['pp']
和jj['sp']
传递给Shell脚本,然后在我的bash脚本中进行迭代,
下面的脚本不工作,如果我通过jj['pp']
import subprocess import json import os hello1 = "Hello World 1" hello2 = "Hello World 2" jsonData = '{"pp": [0,3,5,7,9], "sp": [1,2,4,6,8]}' jj = json.loads(jsonData) print jj['pp'] print jj['sp'] # foo = (0, 3, 5, 7, 9) # os.putenv('FOO', ' '.join(foo)) print "start" subprocess.call(['./test.sh', hello1, hello2, jj['pp']]) print "end"
更新: –
JSON文件下面只会以这种格式 –
jsonData = '{"pp": [0,3,5,7,9], "sp": [1,2,4,6,8]}'
所以不知何故,我需要将其转换为Bash数组,同时传递给shell脚本..
蟒蛇
import os import json import subprocess hello1 = "Hello World 1" hello2 = "Hello World 2" jsonData = '{"pp": [0,3,5,7,9], "sp": [1,2,4,6,8]}' jj = json.loads(jsonData) print jj['pp'] print jj['sp'] os.putenv( 'jj', ' '.join( str(v) for v in jj['pp'] ) ) print "start" subprocess.call(['./test.sh', hello1, hello2 ]) print "end"
庆典
echo $1 echo $2 for el in $jj do echo "$el" done
采取从这里: 传递python数组到bash脚本(并且传递bash变量到python函数)