如何運行命令(這是一個命令行Java應用程序),讀取其輸出並使用shell腳本向其輸入輸入。那可能嗎?我聽說過一些叫做GNU Screen的東西,但是當我用Google搜索它時,它看起來像是不會幫助我的東西?我很困擾。 所以基本上 我需要運行一個命令,得到它的輸出,發送它的輸入。注意:您需要輸入'exit'來停止命令,那麼是的。我很困惑。指點我對GNU Screen的教程和解釋或給我展示一些東西會很有幫助。如何運行命令,使用bash獲取輸出和輸入命令
0
A
回答
0
這聽起來像你正在尋找的是Expect, 「[...]用於自動化交互式應用如telnet,ftp,passwd文件時,fsck,rlogin的,尖等的工具」使用Tcl腳本語言。
然而,如果您發送的程序中沒有指令依賴於同一程序的先前輸出,猛砸可能通過自身運作不夠好;只需使用臨時文件和I/O重定向(如Usman Saleem的回答):
- 將命令列表保存到第一個文件中;和
- 將程序的標準輸入重定向到該文件;和
- 將標準輸出重定向到第二個文件。
read
內置命令可能證明對讀取生成的輸出文件很有用。
GNU屏幕只是一個「終端複用器」程序是:a)可以讓你有超過一個調制解調器或SSH連接多個終端的「窗口」和b)可以讓你保持程序運行,你從服務器斷開後也。這不是你正在尋找的程序。
有一件事我會建議對是使你的shell腳本都產生程序的輸入,並接受該計劃的實時輸出;數據將被捕獲到stdio輸出緩衝區中,並可能發生死鎖。這就是Expect創建的原因。
+0
非常感謝!很有幫助 – Algo
0
如果您不需要等待輸入exit
:
output=$(echo "exit" | java prog)
1
使用輸入輸出重定向。例如,
java yourprog args > output.txt 2> erroutput.txt < input.txt
input.txt將包含您將在命令行中輸入的字符串。 System.out.println將轉到output.txt,System.err.println將轉到erroutput.txt
屏幕只是一個虛擬終端仿真器,它允許您從一個shell屏幕獲得多個shell。
相關問題
- 1. Java在運行bash命令時輸入並獲取輸出
- 2. Bash - 獲取命令的輸出
- 3. Bash - 如何將命令的輸出寫入變量並獲取命令pid
- 4. 如何捕獲命令行中的所有命令和輸出?
- 5. 解析bash命令輸出
- 6. 運行窗口命令從bash輸出到標準輸出?
- 7. 使用bash/node檢索命令輸出
- 8. 如何存儲bash命令的輸出?
- 9. Bash - 捕獲命令的輸出
- 10. Bash遞歸捕獲命令輸出
- 11. 如何執行shell命令在Python中的命令後獲取輸出和pwd
- 12. 獲取非阻塞命令行輸出
- 13. 從命令行獲取輸入?
- 14. 從命令行獲取陣列輸入
- 15. 如何在PySide中獲取QProcess運行的命令的輸出?
- 16. 如何在可可中運行shell命令並獲取輸出?
- 17. 與命令行不同的Bash輸出
- 18. 如何獲取Applescript輸入以運行終端命令
- 19. Bash函數不執行輸入命令
- 20. ]命令和命令> [忽略輸出]
- 21. 如何使用getContents從命令行獲取輸入?
- 22. 如何在bash腳本中獲取time命令的輸出?
- 23. 如何從bash獲取telnet命令的輸出?
- 24. 如何在bash命令行上使用awk的輸出
- 25. 如何使用多行命令輸出填充bash數組?
- 26. 如何從等待輸入的命令中捕獲命令輸出?
- 27. 如何在DOS下使用另一個命令的輸出來運行命令?
- 28. 使用命令行重定向輸入和輸出
- 29. 命令行浮點輸入和使用輸出流
- 30. 如何將命令輸出的第二行讀入bash變量?
嗯,我需要1運行該程序2讀取它會給出一個shell窗口3輸入,就像你會在終端窗口中的輸出。我如何做到這一點是殼/ bash,如果我可以? – Algo