我有一个shell脚本(test.sh),我在其中使用像这样的bash数组 -
#!/bin/bash
...
echo $1
echo $2
PARTITION=(0 3 5 7 9)
for el in "${PARTITION[@]}"
do
echo "$el"
done
...
截至目前,我已经在shell脚本中硬编码了PARTITION数组的值,如上所示..
现在我有一个Python脚本,如下所述,我通过传递hello1
和hello2
之类的参数来调用test.sh shell脚本,我可以将其作为{{1}接收}和$1
。现在,我如何将$2
和jj['pp']
从我的Python脚本传递到Shell脚本,然后像我目前在bash脚本中那样迭代该数组?
如果我通过jj['sp']
jj['pp']
更新: -
JSON文档下面只有这种格式 -
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"
所以我需要在传递给shell脚本时将其转换为bash数组。
答案 0 :(得分:3)
的Python
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"
的bash
echo $1
echo $2
for el in $jj
do
echo "$el"
done
从这里采取:Passing python array to bash script (and passing bash variable to python function)