gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:36 24 4
gpt4 key购买 nike

我有一个在 python 脚本中定义的数组 HSPACE。我试图将此数组传递给 shell 脚本“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 分隔的流传递到标准输入:

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

...并且,在您的 shell 中:

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

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

关于python - 如何将数组从 python 传递到 shell 脚本并执行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com