2016-04-08 57 views
2

我有這個命令command在某些時候返回:Press Enter to continueShell:寫一個在stdin上執行的腳本等待

我想編寫一個腳本,調用command,讀取遠處的命令輸出,在Press Enter to continue到達時用它做些什麼,並在完成時模擬一個Enter鍵。

任何機會,我可以實現這一目標? :-D

喜歡的東西:

myscript | command > output 

myscript

#!/bin/bash 

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

只是它不工作! :-)

+1

'echo -ne'\ n''是驚人的奇異。這與'echo'實際上相同,只是便攜性較低,而且鍵入和閱讀更多。 –

+0

這就是說這個嘗試不起作用?它不確認提示嗎?提示是從標準輸入還是從tty直接讀取?我也不明白輸出文件的位。你想在輸入文件之前複製輸出文件? –

+3

尋找'expect'程序的教程? (並且你不清楚你的意思是「我有這個命令'> command'」。是否是'>'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