繁体   English   中英

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

[英]How to pass an array from python to shell script and execute it?

我有一个HSPACE数组,它在python脚本中定义。 我试图将此数组传递给外壳脚本“ arraytest”,并从python本身执行它。 我正在尝试以下代码,但似乎无法正常工作:

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

Shell脚本的内容为:

#!/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: %q\n' "$@"

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

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

...然后,在您的外壳中:

#!/bin/bash
arr=( )
while IFS= read -r -d '' entry; do
  arr+=( "$entry" )
done

printf 'hspace array entry: %q\n' "${arr[@]}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM