シェルのPythonプログラムにパラメータを渡す

シェルのPythonプログラムにパラメータを渡す

シェルスクリプトからPythonスクリプトを実行できません。以下は、Pythonスクリプトに3つのパラメータが渡されるscript.shファイルです。

python main.py 1.0 0.1 10

Pythonプログラムがパラメータを読み込めませんでした。コマンドライン端末で同じ行を実行すると正常に動作します。

main.py<<>>ハードコードにパラメータを定義し、パラメータなしでコマンドを実行してこれを確認しました。それでも動作しません。このmain.pyファイルは、同じディレクトリにある他のファイルも使用します。また、スクリプトも同じディレクトリにあります。

答え1

貼り付けたものとして見ると、SyntaxError間違ったPythonバージョン、特にPython 3ではなくPython 2でスクリプトを実行しているようです(SyntaxErrorコメントで文句を言うことができます)。Python 3にのみ存在します。)。

受け取った実際のエラーを読んでみると、これは実際にはパラメータ(質問タイトル)の配信とはまったく関係がないことがわかります。

正しい解決策は、スクリプトにインタプリタ名を追加して呼び出すのではなく、独自のインタプリタを呼び出すことです。

./main.py 1.0 0.1 10

変える

python main.py 1.0 0.1 10

正しく作成された場合、スクリプトにシェルボーンライン最初にどのインタプリタで実行する必要があるかを指定すると、そうなりますpython3

スクリプトに独自のインタプリタを指定させることで、呼び出しスクリプトはどのインタプリタが必要かを知ったり気にする必要はありません。まったく異なる言語を使用するようにスクリプトを書き換えることもできます(またはまったくスクリプトではなくコンパイルされたバイナリに置き換えることもできます)、呼び出し元は変更せずに別の方法で呼び出すことができます。

関連情報