bash配列をPython関数に渡す

bash配列をPython関数に渡す

bashスクリプトで定義された配列を、配列を変更して返すPythonスクリプトに送信する必要があります。次に、再度 bash 配列に割り当てる必要があります。また、Bashが配列の値を保持し、Pythonが値を変更する必要があるかのようです。

クンクンスクリプト:

   arr=(0)
   ret=`python -c 'from pyscript import fun;print fun(arr)'`
   arr = ${ret[@]}  # assign returned array from python script to bash array

Pythonスクリプト:

def fun(arr):
   arr.append(1)
   return arr

この混乱で私を助けてください。

ベストアンサー1

次のようにしてみてください。

arr=(0)
ret="$(python -c 'from pyscript import fun;print fun(arr)' "${arr[@]}")"
mapfile -t arr <<<"$ret" # assign returned array from python script to bash array

ここでは、Pythonスクリプトがコマンドラインから入力を受け取り、各パラメータをPython配列に保存すると仮定しますarr。 Pythonスクリプトが大きなプログラムの小さな部分でない限り、コードはこれを行いません。私はこれをあなたに任せます。この答えの焦点は、bashが配列をPythonに渡してから、Pythonスクリプトから返されたデータに基づいて変更する方法です。

Pythonスクリプトは、改行で区切られた各要素を使用して配列をstdoutとして印刷する必要があります。

@xenoidの提案は、次を使用することです。

ret="$(python -c 'import sys;from pyscript import fun;print fun(sys.argv[1:])' "${arr[@]}")"

おすすめ記事