1

次の方法で、Pythonスクリプトからbashスクリプトにいくつかのパラメーターを渡そうとしています。

input_string = pathToScript + " " + input1 + " " + input2 + " " + input3 + " " + input4 + " " + \
input5 + " " + input6 + " "  + input7 + " " + input8 + " "  + input9 + " "  + input10

args =  shlex.split(input_string)

p = subprocess.Popen(args)

ここで、すべてinputXは文字列です。これらの各引数はスクリプトに渡され、そのパスは変数に格納されますpathToScript。私は今、私が通常行うように、bashスクリプトでこれらのパラメーターをキャッチできるようにしたいと思っています。

#No input check yet...
history_file = "$1"
folder_history_file = "$2"
folder_bml_files = "$3"
separate_temperature = "$4"
separate_temperature_col_index = "$5"
separate_sight = "$6"
separate_sight_col_index = "$7"
separate_CO = "$8"
separate_CO_col_index = "$9"
separate_radiation = "$10"

これによりline 61: separate_CO_col_index: command not found、これらすべての行のようなエラーが発生し、エラーは行の順序と同じようには表示されません。言い換えると、61行目のこのようなエラーは60行目のエラーの前にキャッチされることがあります。これはEclipseの出力からのようです(私はEclipseでPyDevを使用しています)。

このようなbashスクリプトを実行することはできませんか?私はchの方法に従ってみました。17.1.1.1ここにありますが、私はそれを正しく理解していない可能性があります:python docs

4

1 に答える 1

4

の周りにスペースを入れると、bashのエラーが表示されます=。あなたは使用する必要があります

history_file="$1"

それ以外の

history_file = "$1"

そこにスペースを入れると、Bashはその行がコマンド呼び出しであると見なし、history_fileコマンドとして実行しようとします。


Pythonスクリプトでは、次のように簡単に使用できます。

args = [pathToScript, input1, input2, ....]

あなたが持っているものの代わりに。これはより単純であり、引数にスペースが含まれている場合は正しく機能しますが、現在のコードでは失敗します。input_string次の行で文字列を分割するためだけに文字列を作成しても意味がありません。

于 2013-02-04T15:21:02.467 に答える