対話型コマンドラインJavaプログラムをbashで自動化して、入力に対して適切な出力が得られることを検証しています。私は自分のフルネームを入力するようにユーザに要求したJavaプログラムを持っている、とだけ彼らの最初の名前を出力した場合bashによる対話型プログラムの出力と入力のキャプチャ
例えば、それは次のようになります。
Enter your name: John Doe
John
どこに「ジョン・ドウ」ユーザーが入力したものです。
これは次のようになります実行するための簡単なbashコマンド:
OUTPUT=`echo "John Doe" | java NameReader`
または
OUTPUT=`java NameReader <<< "John Doe"`
これらの両方とのトラブルが$ OUTPUTは現在、以下が含まれていることである。
Enter your name: John
stdin(およびそれに付随する改行)に送信されたテキストがoutpで再現されないため私たちがコンソールに表示する方法でプログラムを実行します。
Enter your name: John Doe
John
しかし、私はこれと一緒に暮らすことができます::理想的
、$出力はこれを含んでいるでしょう
Enter your name:
John
(入力が完全に省略されていますが、出力のように、新しい行にあります予期しない)
bash(基本となるjavaプログラムを変更することなく)で、stdinにパイプされるテキストを取得して、javaプロによって読み込まれる「時刻」にstdoutにパイプする方法はありますかグラムなので、完全なインタラクティブなセッションがキャプチャされますか?
(もう一つ注意:一部の産卵は/コマンドが役に立つかもしれません期待していることを示し、検索、これは上で動作するシステムは、彼らが利用できる持っているように見えません)
だから 'echo" John Doeと言うとき、コンソールで何を見ますか? Java NameReader'(バッククッキーなし)? –
@ n.m。同じ結果が表示されます。「あなたの名前を入力してください:John」(すべて1行で) – jthurman
あなたのスクリプトはあなたに何かを提示しますが、改行を挿入する場所を知る方法は? –