私はPythonスクリプトを実行するシェルスクリプトを書いています。 Pythonスクリプトは手動入力を提供するために一時停止されます。しかし、スクリプトで毎回Enterキーを押すのは好きではありません。代わりに、実行中のシェルスクリプトから手動入力を渡したいと思います。
助けてください。方法がありますか?
答え1
入力が1つだけ必要な場合は、echo
パイプを使用してください。
echo | python script.py
echo
空行(改行を含む)を標準出力として印刷し、Pythonスクリプトの入力にリダイレクトします。使用|
。 Pythonが標準入力から読み取ると空白行が得られ続けます。
スクリプトでEnterキーを数回押す必要がある場合は、次のものを使用できます。yes
注文するそしてパイプ:
yes "" | python script.py
このyes
コマンドは、同じ行を標準出力に印刷し続けます。デフォルトでは文字列はですが、y
ここでは空の文字列に設定するので、常に改行文字になります。
特定のプロンプトに応じて入力が必要で、他の場合は他の入力が必要な場合は次のようにします。expect
、これは「対話型プログラムと自動的にやり取りできるようにするTcl拡張です。」
Pythonの出力を読み、それに対する新しい入力を生成するためにシェルスクリプトを書くことは可能ですが、特にお勧めしません。これをしたい場合は参照してください高度な Bash スクリプトガイドの IO リダイレクト:これを行うには、ファイル記述子を複製する必要があります。また、使用することができますmkfifo
名前付きパイプファイルを作成してから、正常に読み書きします。
正直に言うと、次のいずれかを実行するポイントに達すると、代替案について考え始めます。シェルスクリプトはそのために作成されておらず、たとえばPython自体でスクリプトを作成する方が簡単です。