コマンドを開始し、プロンプトパラメータを提供します。

コマンドを開始し、プロンプトパラメータを提供します。

何かをビルドし、プロンプトを介して対話型シェルを提供するコマンドがあります(たとえば、再起動するにはR入力、終了するにはQ入力など...)。

コマンドを使用したいのですが、プロンプトセクションに達したら停止します。コマンドを呼び出すときに「Q」パラメータを渡したり、プロンプトに到達した後に終了する方法はありますか?

答え1

スクリプトが「normal」を介して入力を読み取る場合は、read他のプログラム(パイプなど)を使用して事前入力を提供できます。echoprintf

echo Q | your-program-here

より複雑な例は次のとおりです。

(echo 1; echo thing2; echo yes; echo Q) | your-program-here

より複雑な自動入力スクリプトを完成させるために、同様のプログラムを使用することも可能です。

答え2

コマンドが対話型入力を待たないようにするには、入力をどこかでリダイレクトするだけです。説明するようなほとんどのプログラムは標準入力の終わりに達すると終了しますので、プログラムが初期操​​作を実行する以外に何もしないようにするには、空の入力を渡します。

thatcommand </dev/null

実際に固定入力を渡すには、次を使用できます。ここのドキュメント

thatcommand <<EOF
Q
EOF

ここでは、ドキュメントに変数を含めることもできます。入力をより動的に設定する必要がある場合は、必要なシェルコードをパイプできます。

{
  # complex shell code goes here
  echo Q
} | thatcommand

私はプログラムが標準入力から読み取ると仮定します。一部のプログラムは端末から強制的に読み取られるため、入力リダイレクトは機能しません。このような場合は、このようなツールが必要です。予想される。 Expect は、前の出力に依存するプログラムに入力が必要な場合にも便利です。

関連情報