我有一個bash腳本,它使用read
命令以交互方式讀取命令參數,例如yes/no選項。有沒有辦法在非交互式腳本中將默認選項值作爲參數傳遞給此腳本?以非交互方式將參數傳遞給交互式程序
這不只是一個選項,我必須傳遞給交互式腳本。
我有一個bash腳本,它使用read
命令以交互方式讀取命令參數,例如yes/no選項。有沒有辦法在非交互式腳本中將默認選項值作爲參數傳遞給此腳本?以非交互方式將參數傳遞給交互式程序
這不只是一個選項,我必須傳遞給交互式腳本。
如需更多e複雜任務有expect
(http://en.wikipedia.org/wiki/Expect)。 它基本上模擬一個用戶,你可以編寫一個腳本如何對特定的程序輸出和相關的東西作出反應。
這也適用於像ssh
這種情況,禁止管道密碼。
...雖然在SSH情況下適當的解決方案是切換到公鑰認證。 – tripleee
你可以把數據放到一個文件並重新引導它像這樣:
$ cat data.txt
2
3
執行腳本:
$ file.sh < data.txt
2
3
$ cat file.sh
#!/bin/bash
read x
read y
echo $x
echo $y
數據多種方式
管道y我們的輸入
echo "yes
no
maybe" | your_program
重定向從文件
your_program < answers.txt
使用here document(這可能是非常可讀)
your_program << ANSWERS
yes
no
maybe
ANSWERS
your_program <<< $'yes\nno\nmaybe\n'
只是想添加一個更多的方法。在別處找到它,而且很簡單。 假設我想在命令行中爲命令「execute_command」傳遞所有提示的yes,那麼我只需向它輸入yes即可。
yes | execute_command
這將使用yes作爲所有yes/no提示的答案。
如果從標準你可以管你輸入 –
由於這個問題得到讀取重複很多,值得指出的是,它並不重要的語言交互程序被寫入。它可能是一個讀取標準輸入或Erlang應用程序的C程序,或其他任何程序。有些東西是從命令行運行的,並且令人討厭地要求交互式輸入,並且您希望將其自動化。 – tripleee