を。しかし、もう少しコードで。以下のように見えるシェルスクリプトの
は次のとおりです。
#!/bin/sh
myvar="here is my variable in the shell script"
function print_myvar() {
echo $myvar
}
をあなたは、変数の値を取得したりしても、次のPythonコードのようにシェルスクリプト内の関数を呼び出すことができます。
import subprocess
def get_var(varname):
CMD = 'echo $(source myscript.sh; echo $%s)' % varname
p = subprocess.Popen(CMD, stdout=subprocess.PIPE, shell=True, executable='/bin/bash')
return p.stdout.readlines()[0].strip()
def call_func(funcname):
CMD = 'echo $(source myscript.sh; echo $(%s))' % funcname
p = subprocess.Popen(CMD, stdout=subprocess.PIPE, shell=True, executable='/bin/bash')
return p.stdout.readlines()[0].strip()
print get_var('myvar')
print call_func('print_myvar')
CMD
のシェルコマンドをそのまま処理するには、shell=True
の両方を設定し、デフォルトの/bin/sh
ではサポートされていないプロセス置換を使用するようにexecutable='bin/bash'
を設定する必要があります。
私は不思議です、すべての変数をエクスポートする簡単な方法はありますか? –
@TallPaul 'os.environ'ディクショナリには、すでにプログラムが見ることができるすべての変数が入っています。 – Bakuriu
'set -a;ソースenv.sh; + aをセットする。 '-a'オプションは' bash'に '+ a'でそれをオフにするまで新しい変数をそれぞれエクスポートするよう指示します。 – chepner