仕事で問題が発生しました。ここにあります。
実行するスクリプト (ほとんどはシェル スクリプト) がいくつかあり、それらを自動的に実行する Python スクリプトを作成したいと考えています。これらのシェル スクリプトの 1 つは、実行中にインタラクティブな入力を必要とします。私を悩ませたのは、入力プロンプトを読み取る方法が見つからないことです。そのため、何を入力して続行するかを決めることができません。
問題を次のように単純化しました。
内部mediator.py
で実行される という名前のスクリプトがあります。greeter.sh
はの入力プロンプトmediator
をgreeter
取得してユーザーに出力し、ユーザーの入力を取得して に渡しますgreeter
。は、ユーザーの観点からmediator
とまったく同じように動作する必要があります。greeter
ここにあるgreeter.sh
:
#! /bin/bash
echo "Please enter your name: " # <- I want 'mediator.py' to read this prompt and show it to me, and then get what I input, then pass my input to 'greeter.sh'
read name
echo "Hello, " $name
以下の順番で行いたいと思います。
- ユーザー(それは私です)が実行します
mediator.py
mediator
ランgreeter.sh
インサイド_- の
mediator
入力プロンプトを取得greeter
し、画面に出力します。(現時点でgreeter
は、ユーザーの入力を待っています。これが私が立ち往生している主な問題です) - ユーザーが文字列 (たとえば、「Mike」) を入力し、文字
mediator
列「Mike」を取得して、それをに送信します。greeter
- 「マイク」という
greeter
名前を取得し、挨拶を印刷します - あいさつを取得し、
mediator
画面に出力します。
私はいくつかの解決策を探し、サブプロセスのモジュールでPopen
関数を使用することに決めました、それは次のようなものです:subprocess
stdout
PIPE
sb = subprocess.Popen(['sh', 'greeter.sh'], stdout = subprocess.PIPE, stdin = stdout, stderr = stdout)
しかし、上記のステップ 3の主な問題を解決できません。誰か助けてくれるアドバイスをくれませんか?どうもありがとう!