对于只传递一个参数,可以使用如下python脚本:import subprocess
correctBc4jfiles = ["1","2","3"]
subprocess.call(["/bin/bash", "/path/to/mail.sh"] + correctBc4jfiles)
有一个这样的bash脚本:
^{pr2}$
我们可以从python向shell脚本传递多个变量吗?就像在这个例子中,我们只传递一个变量correctBc4jfiles?我该怎么做?
您必须让python脚本传递每个变量的值数,例如:import subprocess
var0 = ["|1|", "|2|", "|3|"]
var1 = ["|4|", "|5|", "|6|"]
subprocess.call(["/bin/bash", "script.sh"] + [str(len(var0))] + var0 + [str(len(var1))] + var1)
让巴什来解释:#!/bin/bash
varprefix='var'
varindex=0
declare -i count
while [[ $# -gt 0 ]]; do
count=$1
if [[ count -gt 0 ]]; then
eval "${varprefix}$(( varindex++ ))=(\"\${@:2:count}\")"
shift "$count"
fi
shift
done
set | grep ^var ## Just show what variables were made.
输出如下:var0=([0]="|1|" [1]="|2|" [2]="|3|")
var1=([0]="|4|" [1]="|5|" [2]="|6|")
varindex=2
varprefix=var
这样你就可以使用varX了。在
如果不喜欢varX格式,只需将值复制到所需的数组变量:myarray1=("${var0[@]}")
myarray2=("${var1[@]}")