如何繞過腳本中的使用者互動?

如何繞過腳本中的使用者互動?

我正在嘗試透過 shell 腳本自動安裝程式。有幾個步驟需要使用者透過命令列進行互動(確認、是/否等)。繞過它的最佳方法是什麼?我知道一種可能性是使用期望腳本。只是想知道是否有更好/更乾淨的方法來做到這一點。

答案1

如果互動很簡單,即僅從標準輸入讀取,您可以將特定行傳送到程式的輸入:

( echo yes ; echo 1024; echo yes ) | install.sh

答案2

如果您想做的事情不僅僅是從 stdin 讀取(例如 ftp 登入),您將需要使用預計

答案3

來自另一個線程:

如果您的命令不關心輸入的速度,並且您實際上不需要與它交互,那麼您可以使用heredoc。

例子:

#!/bin/bash
command_you_want_to_execute <<EOD
interaction_1
intereaction_2
EOD

如果您需要根據程式的輸出進行分支,或者您的程式對命令的時間非常敏感,那麼 Expect 就是您想要的。

相關內容