2017-07-08 51 views
-1

是否有可能發送多個響應按順序安裝腳本?具體來說,如果安裝腳本要你在這個崗位按enter,然後Q,然後yes,如:install miniconda安裝Miniconda2非交互

我試過管道的東西在一起,但因爲我使用bash腳本很陌生,我可能只是把事情搞糟了還是錯誤的做法。


編輯:

我試着寫一個expect腳本,但它掛如圖所示的腳本下面的圖片。

#!/usr/bin/expect -f 
spawn ~/Miniconda-latest-Linux-x86_64.sh 
set timeout -1 
expect "$ " 
send "\r" 
expect "Welcome " 
send "Q" 
expect "? " 
send "yes" 

expect script

+1

首先檢查工具本身。通常他們會有標誌或配置文件,您可以提前指定所有選項來執行非交互式無人值守安裝。這比嘗試發送回覆要好得多。 –

+0

所以我看了看腳本,看到''批處理模式下運行安裝'的標誌選項'-b'。這到底是什麼意思呢? –

+3

[我谷歌搜索](https://conda.io/docs/help/silent.html):「無聲安裝Miniconda for Linux和OS X是一個簡單的指定bash安裝程序的-b和-p參數[...]批處理模式假定您同意許可協議,並且不會編輯.bashrc或.bash_profile文件。「所以它會自動同意許可證,這正是你想要做的 –

回答

1

您正在尋找expect

想到的是, 「會談」,與其它交互式程序按照一個腳本程序。在腳本之後,Expect知道程序可以預期什麼,以及正確的響應應該是什麼。解釋型語言提供分支和高層次的控制結構來指導對話。另外,用戶可以在需要時直接控制和交互,然後將控制權返回給腳本。


編輯:看截圖它要求您「按回車鍵繼續」我並不在腳本中看到。你有send "\r",但是這不是什麼正常輸入發送。在Windows上,它會發送/r/n,並在Linux上發送/n。試試看。

+0

你介意幫我編寫Expect腳本嗎?我編輯了上面的帖子來展示我的內容。 –

+0

我沒有用過很多我自己,我只是知道這就是它的用途。我確信有很多教程和例子。一般來說,如果您在發佈新問題時遇到新問題,請不要回收問題。 – dimo414