是否有可能讓bash腳本自動處理通常會以默認操作呈現給用戶的提示?目前,我正在使用bash腳本來調用一個內部工具,它會向用戶顯示提示(提示是/否)完成操作,但是我正在編寫的腳本需要完全「不干涉」,所以我需要一種方法將Y|N
發送到提示符以允許程序繼續執行。這可能嗎?bash腳本回答交互式提示
回答
我發現發送輸入的最佳方式是使用cat和一個文本文件來傳遞你需要的任何輸入。
cat "input.txt" | ./Script.sh
如果你只有Ÿ派:
$> yes Y |./your_script
如果你只有有N個送:
$> yes N |./yout_script
在我的情況,我需要回答無Y或N的一些問題但帶有文字或空白。我發現在我的情況下做到這一點的最好方法是創建一個shellscript文件。在我的情況下,我稱它爲autocomplete.sh
我需要回答一些教條模式導出器的問題,所以我的文件看起來像這樣。
- 這僅是一個例子 -
php vendor/bin/mysql-workbench-schema-export mysqlworkbenchfile.mwb ./doctrine << EOF
`#Export to Doctrine Annotation Format` 1
`#Would you like to change the setup configuration before exporting` y
`#Log to console` y
`#Log file` testing.log
`#Filename [%entity%.%extension%]`
`#Indentation [4]`
`#Use tabs [no]`
`#Eol delimeter (win, unix) [win]`
`#Backup existing file [yes]`
`#Add generator info as comment [yes]`
`#Skip plural name checking [no]`
`#Use logged storage [no]`
`#Sort tables and views [yes]`
`#Export only table categorized []`
`#Enhance many to many detection [yes]`
`#Skip many to many tables [yes]`
`#Bundle namespace []`
`#Entity namespace []`
`#Repository namespace []`
`#Use automatic repository [yes]`
`#Skip column with relation [no]`
`#Related var name format [%name%%related%]`
`#Nullable attribute (auto, always) [auto]`
`#Generated value strategy (auto, identity, sequence, table, none) [auto]`
`#Default cascade (persist, remove, detach, merge, all, refresh,) [no]`
`#Use annotation prefix [ORM\]`
`#Skip getter and setter [no]`
`#Generate entity serialization [yes]`
`#Generate extendable entity [no]` y
`#Quote identifier strategy (auto, always, none) [auto]`
`#Extends class []`
`#Property typehint [no]`
EOF
我喜歡這種策略,你可以發表評論你的答案是什麼,以及使用EOF一個空行的事情就是這樣(默認回答)。通過這種出口商工具有自己的JSON對應方式回答這些問題的方式,但我做了這個=)。
運行腳本只需在您想要的目錄中並在終端中運行'sh autocomplete.sh'
。
總之,通過使用< < EOL & EOF結合返回行你能回答必要提示的每一個問題。 每一個新行都是一個新的答案。
我的例子只是展示瞭如何使用`character來完成評論,這樣你就可以記住每一步是什麼。
請注意,這種方法的另一個優點是你可以用更多的答案,然後只是Y或N ...其實你可以用空格回答!
希望這可以幫助別人。
請讓我知道爲什麼downvote,這花了很長時間才發現這是答案(和我的情況只是答案)。我把它放在這裏與社區分享,它應該停留在提問者身上。 「是否有可能讓bash腳本自動處理通常會以默認操作呈現給用戶的提示?」,是的,使用我上面提到的方法是一種方法。 – 2017-04-29 00:30:56
- 1. 如何讓bash腳本回答交互式提示(僅限y/n)?
- 2. 自動回答bash腳本提示
- 3. 從bash腳本回答[Y/n]提示
- 4. 交互式bash腳本
- 5. 使bash腳本切換到交互模式,並給出提示
- 6. 的Bash shell腳本回答
- 7. Bash腳本交互式mv問題
- 8. 交互式shell提示的自動回答(是/否)
- 9. 如何回答是在bash腳本
- 10. 如何從文本文件中向交互式bash腳本提供輸入
- 11. Ant數據庫重建腳本,避免交互式提示
- 12. 交互式Flask提示
- 13. 命令替換bash腳本中的交互式命令
- 14. 沒有交互模式進入bash腳本
- 15. 用於備份的交互式bash腳本
- 16. Bash腳本 - 從Systemd啓動腳本時的用戶交互
- 17. 終端提示基本bash腳本
- 18. Git Bash腳本檢查回購是否有任何提交?
- 19. 如何使Powershell腳本回答用戶輸入的提示?
- 20. Python腳本自動與fdisk進行交互提示
- 21. Bash交互式和非交互式shell行爲
- 22. 異步交互式Python腳本
- 23. svn propedit在非交互式腳本中
- 24. Appengine非交互式遠程腳本
- 25. Julia pyplot腳本(不是交互式)
- 26. 重定向交互式腳本
- 27. 交互式shell腳本命令行php
- 28. 從Java調用「交互式」Perl腳本
- 29. 帶線程的交互式腳本
- 30. 交互式R啓動腳本
這不是「自動完成」......像@unwind說的那樣,它是「自動化」 – benzaita 2012-06-26 12:55:37
使用'yes'來執行此操作的示例:http://unix.stackexchange.com/questions/47344/the-yes-命令#comment65866_47344 – Droogans 2015-09-22 15:01:27