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[@]}")"