我正在尝试通过 shell 脚本自动安装程序。有几个步骤需要用户从命令行进行交互(确认、是/否等)。绕过它的最佳方法是什么?我知道一种可能性是使用 expect 脚本。只是想知道是否有更好/更干净的方法来做到这一点。
答案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 就是您所需要的。