在终端提示被询问之前我该如何响应?

在终端提示被询问之前我该如何响应?

我正在尝试在启动脚本中自动安装 Ubuntu 18.04 VM 模板上的 CUDA。我对 bash 和云计算还很陌生。当我运行安装 CUDA 的命令时,在安装过程中,系统总是提示我通过输入相应的 ID 号从选项列表中选择一个国家/地区和一种语言。

基本上,当我跑步时:

sudo apt-get -y install cuda

我知道我必须手动输入“31”和“1”才能完成安装。作为这方面的新手,我的问题是“如何自动输入这些内容,这样我就不必每次启动此 VM 模板的新副本时都手动输入它们?”

我最初的做法是这样的:

printf "31\n1\n" | sudo apt-get -y install cuda

但这似乎并没有像我预期的那样工作。没有自动填充任何输入。

我的最终目标是通过一个启动脚本来处理所有我不需要触碰的事情。

我非常感谢大家的帮助,如果我的问题已经在其他地方得到解答,我深感抱歉(如果已经得到解答,但我找不到它,如果能指引我找到它,我将不胜感激!)

答案1

安装expect并编写一个可以回答提示的期望脚本。它看起来像这样(警告 - 未经过任何测试):

#!/usr/bin/expect
spawn sudo apt-get -y install cuda
expect "first prompt:"
send "31\r"
expect "second prompt:"
send "1\r"
wait

其中您需要用适当的实际提示来代替“第一个提示:”和“第二个提示:”。

请在此处查看有关以下方面的更多信息expect

https://www.slashroot.in/expect-command-tutorial-linux-example-usage

http://tcl.tk/man/expect5.31/expect.1.html

您可能还对此感兴趣autoexpect,它可以通过观察您的交互式会话自动生成脚本:

http://tcl.tk/man/expect5.31/autoexpect.1.html

相关内容