如何設置要使用的字符串而不是標準輸入?例如,在Unix中運行latex命令時,它總會發現一些微不足道的錯誤,要跳過所有必須在命令行中輸入「r」的錯誤(我現在知道使用latex特別是可以使用-interactionmode nonstopmode,但有沒有更通用的解決方案來做到這一點?) 是否有指定這應該自動完成?我嘗試重定向標準輸入以從包含「r \ n」的文件中讀取,但這不起作用。 我該如何做到這一點?如何執行自動化的Unix輸入?
回答
不是需要輸入可以是滿意自己的標準輸入重定向的所有應用程序。
這是因爲應用程序可以調用isatty C函數(如果使用C語言編寫,或者使用其他語言的某些等效調用)來確定輸入是否來自tty。
在這種情況下,有一個有價值的工具可以使用,這是expect。
從man page:
-interaction模式
設置交互模式。該模式可以是批模式,非停模式,滾動模式和errorstopmode。這些模式的含義與相應\命令的含義相同。
看起來像-interaction nonstopmode
可能會幫助你。
這確實回答了我如何專門爲乳膠做的問題,但不完全是關於如何實現輸入自動化的其他部分 – Tom 2010-10-06 15:48:38
一般而言,您所做的(重定向標準輸入)應該可以工作,但如果程序直接讀取,它會失敗從控制檯而不是標準輸入,在這種情況下,沒有簡單的解決方案。但我懷疑乳膠屬於這一類 - 也許你忽視了一些簡單的東西。 – casablanca 2010-10-06 15:52:52
latex --interaction=MODE
其中MODE
是一個:
errorstopmode
:停止在每一個錯誤,並要求輸入scrollmode
:滾動了非致命錯誤,但在致命錯誤停止(如「文件未找到「)nonstopmode
:滾動到非致命錯誤,在致命錯誤處終止batchmode
:與一樣,但不會在終端
對於交互式用戶顯示messaes,errorstopmode
(默認值)是好的,對於非交互使用,nonstopmode
和batchmode
更好。
但要小心,沒有小錯誤:所有的錯誤必須是固定的,如果可能的話,所有的警告應該是固定的。
將stdin重定向工作沒有問題在這裏:
/tmp $ tex '\undefined\end' <<< r
This is TeX, Version 3.1415926 (TeX Live 2010)
! Undefined control sequence.
<*> \undefined
\end
? OK, entering \nonstopmode...
(see the transcript file for additional information)
No pages of output.
Transcript written on texput.log.
- 1. 自動給輸入執行的程序
- 2. UNIX - 使用SCP自動輸入密碼
- 3. 如何自動化運行提示用戶輸入的命令?
- 4. 如何在PowerShell中粘貼輸入時不自動執行
- 5. 在bash中,有標準輸入執行腳本時,如何自動輸入值?
- 6. 自動化執行命令
- 7. 使用ssh執行自動執行用戶登錄的輸入執行命令
- 8. 如何在UNIX中逐行輸入輸入,在每一行執行命令並立即返回輸出?
- 9. 自動化jar輸入
- 10. 自動化輸入在Ubuntu
- 11. 如何執行INotifyPropertyChanged自動
- 12. 輸入如何自動
- 13. 如何簡化/自動化數據輸入?
- 14. UI自動化如何執行滑動刪除
- 15. 如何爲Unix命令行執行「 - 」* 60
- 16. Excel自動輸入行數
- 17. 如何執行XSLT樣式表的自動化測試?
- 18. perl的執行,其中輸入來自<(CMD2輸入)命令
- 19. 從cgi頁執行unix輸出
- 20. 如何自動化輸入鍵的TextBox控件
- 21. 如何自定義WebViewPage執行輸出?
- 22. 如何執行自動滾動?
- 23. Hadoop如何執行輸入拆分?
- 24. 我如何執行命令誰輸入
- 25. 如何執行鏈接的href自動
- 26. 如何自動執行我的代碼?
- 27. SonarQube測試自動化執行報告
- 28. 如何在沒有UNIX的Windows PC上執行UNIX Shell編程?
- 29. OMNIUpdate數據輸入自動化
- 30. 用密碼輸入自動化`svn up`
屬於superuser.com。 – Philipp 2010-10-06 15:54:24
超級用戶的邊緣。它可能會在[Tex LaTex和Friends](http://tex.stackexchange.com)上得到更快的答案,但這是一個shell腳本問題,所以暫時可以接受。 – dmckee 2010-10-06 16:05:43
我應該說「邊緣爲*移動*超級用戶」。首先它會在那裏發佈。 – dmckee 2010-10-06 16:23:59