0

ユーザーがコマンドラインを使用して実行できるプログラムがあります。実行すると、キーボードからのコマンドを受信して​​処理します。次のように、ディスクからの入力でプログラムを開始することができます$ ./program < startScript.sh。ただし、スクリプトの実行が終了するとすぐにプログラムは終了します。<プログラムを終了せず、追加のキーボード入力を読み取ることができるように、ディスクからの入力でプログラムを開始する方法はありますか?

4

4 に答える 4

1
(cat foo.txt; cat) | ./program

つまり、最初にfoo.txtの内容を出力し、その後、ユーザーが入力したものをコピーするサブシェル(括弧が行うこと)を作成します。次に、このサブシェルの結合された出力を取得し、プログラムのstdinにパイプします。

これは他の組み合わせでも機能することに注意してください。常に同じ質問をするプログラムを開始したいとします。最善のアプローチは、「expect」を使用して質問が変更されていないことを確認することですが、簡単な回避策として、次のようなこともできます。

(echo y; echo $file; echo n) | whatever
于 2013-03-10T08:06:14.297 に答える
0

プログラムでsystem( "pause")(bashでは単に "pause")を使用して、すぐに終了しないようにします。

次のような選択肢があります

  • ダミー読み取り
  • 無限ループ
  • sigsuspend
  • もっとたくさん
于 2013-03-10T08:01:16.707 に答える
0

それは、がどのようにprogramコーディングされているかによって異なります。startScript.shそれがあなたが達成しようとしていることであるならば、これはでコードを書くことから達成することはできません。

あなたができることはcallingScript.sh、最初に入力を要求し、次にを呼び出すaを書くことですprogram < startScript.sh

于 2013-03-10T08:04:13.053 に答える
0

このようなものを試してみませんか

BODY=`./startScript.sh`
if [ -n "$BODY" ]
    then cat "$BODY" |./program
fi
于 2013-03-10T08:11:24.683 に答える