将python数组传递给bash脚本(并将bash变量传递给python函数)

Hom*_*lli 6 python bash

我编写了一个Python模块,其中包含返回数组的函数.我希望能够访问从python模块返回的字符串数组,并在bash脚本中迭代,因此我可以迭代数组元素.

例如:

Python模块(mymod)

def foo():
    return ('String', 'Tuple', 'From', 'Python' )

def foo1(numargs):
    return [x for x in range(numargs)]
Run Code Online (Sandbox Code Playgroud)

Bash脚本

foo_array  = .... # obtain array from mymod.foo()
for i in "${foo_array[@]}"
do
    echo $i
done


foo1_array = .... # obtain array from mymod.foo1(pass arg count from bash)
for j in "${foo1_array[@]}"
do
    echo $j
done
Run Code Online (Sandbox Code Playgroud)

我怎样才能在bash中实现这个?

版本信息:

Python 2.6.5 bash:4.1.5

Mar*_*ina 13

第二次尝试 - 这次shell取得了整合的冲击.

鉴于foo.py包含:

def foo():
        foo = ('String', 'Tuple', 'From', 'Python' )
        return foo
Run Code Online (Sandbox Code Playgroud)

然后按如下方式编写bash脚本:

#!/bin/bash
FOO=`python -c 'from foo import *; print " ".join(foo())'`
for x in $FOO:
do
        echo "This is foo.sh: $x"
done
Run Code Online (Sandbox Code Playgroud)

其余的是第一个从Python端推动集成的答案.

蟒蛇

import os
import subprocess

foo = ('String', 'Tuple', 'From', 'Python' )

os.putenv('FOO', ' '.join(foo))

subprocess.call('./foo.sh')
Run Code Online (Sandbox Code Playgroud)

庆典

#!/bin/bash
for x in $FOO
do
        echo "This is foo.sh: $x"
done
Run Code Online (Sandbox Code Playgroud)