如何绕过脚本中的用户交互?

如何绕过脚本中的用户交互?

我正在尝试通过 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 就是您所需要的。

相关内容