如何将数组从python传递到shell脚本并执行它



我有一个数组HSPACE它是在python脚本中定义的。我正在尝试将此数组传递给 shell 脚本"arraytest"并从 python 本身执行它。我正在尝试使用以下代码段,但它似乎不起作用:

HSPACE=[0.01, 0.009, 0.008, 0.007]
subprocess.call(["./arraytest"], HSPACE, shell=True)

外壳脚本的内容是:

#!/bin/bash
for i in ${HSPACE[@]}
do
echo $i
done

简单的答案是将每个数组条目作为文字 argv 条目传递:

subprocess.call(['./arraytest'] + [str(s) for s in HSPACE], shell=False)

。此后。。。

#!/bin/bash
printf 'hspace array entry: %qn' "$@"

另一种方法是在 stdin 上将数组作为 NUL 分隔的流传递:

p = subprocess.Popen(['./arraytest'], shell=False, stdin=subprocess.PIPE)
p.communicate(''.join(str(n) for n in HSPACE) + '')

。并且,在您的外壳中:

#!/bin/bash
arr=( )
while IFS= read -r -d '' entry; do
  arr+=( "$entry" )
done
printf 'hspace array entry: %qn' "${arr[@]}"

相关内容

  • 没有找到相关文章

最新更新