2016-04-08 6 views
2

私はこのコマンドをcommandとし、ある時点でPress Enter to continueを返します。シェル:stdin waitで実行されるスクリプトを作成します。

私はcommandを呼び出し、so-farコマンドの出力を読み取り、Press Enter to continueが到着したときに何かを行い、これが完了したらエンターキーを押すとシミュレートするスクリプトを書きたいと思います。

私はそれを達成できますか?以下のような:-D

何か:myscript

#!/bin/bash 

cp output output2 # output2 should only contain the output until Press Enter to continue 
echo -ne '\n' 

myscript | command > output 

それは動作しません除いて! :-)

+1

'echo -ne '\ n"は驚くほど奇妙です。これは実質的に 'echo'と同じですが、移植性が低く、型や読み込みが多くなります。 –

+0

これはどういうわけではないのですか?プロンプトを確認しませんか?プロンプトは標準入力またはttyから直接読み取っていますか?私も出力ファイルについてのビットを理解していませんでした。あなたは "打つ"の直前に出力ファイルをコピーしたいですか? –

+3

'expect'プログラムに関するチュートリアルを探しますか? (そして、 "私はこのコマンド'>コマンドを持っていますか? "という意味がはっきりしていません。)'> 'はcmdのプロンプトですか?そうなら、あなたはそれを含める必要はありません。あなたの現在のディレクトリでファイル 'command'を作成、または消去します)。私たちが一緒に辿ることができる小さくて再現性のあるテストケースを作ろうとしてください。がんばろう。 – shellter

答えて

1

理想的には、それを達成するためにexpectコマンドを使用する必要がありますサンプルコード:

#!/usr/bin/expect 
set timeout 600 
spawn command 
expect "Press Enter to continue" { send "\r" } 

注:お使いのコマンドでcommandを交換してください。

スクリプトに保存して実行可能にして実行します。

詳細:man expectを確認してください。

経由のOS Xインストール:brew install expect

関連する問題