6

シェルスクリプトを呼び出して、Python からスクリプトで定義された関数/変数を使用する方法はありますか?

スクリプトは unix_shell.sh です

#!/bin/bash
function foo
{
...
}

この関数 foo を Python から呼び出すことはできますか?

解決:

  1. 関数の場合: シェル関数を Python 関数に変換する
  2. シェル ローカル変数 (エクスポートされていない) の場合、Python スクリプトを呼び出す直前にシェルで次のコマンドを実行します:
    export $(set | tr '\n' ' ')

  3. シェル グローバル変数 (シェルからエクスポート) の場合、Python では次のことができます。 import os print os.environ["VAR1"]

4

6 に答える 6

4

はい、別の bash スクリプトから呼び出す方法と同様の方法で:

import subprocess
subprocess.check_output(['bash', '-c', 'source unix_shell.sh && foo'])
于 2013-04-16T21:06:21.557 に答える
1

いいえ、それは不可能です。シェル スクリプトを実行し、コマンド ラインでパラメーターを渡すと、Python から解析できるデータを出力できます。

しかし、それは実際に関数を呼び出しているわけではありません。それはまだオプションを指定してbashを実行し、stdioに文字列を戻しています。

それはあなたが望むことをするかもしれません。しかし、それはおそらく正しい方法ではありません。Bash は、Python にできない多くのことを実行できません。代わりに Python で関数を実装してください。

于 2013-04-16T20:50:55.033 に答える