我正在尝试使用 bash 脚本自动化我的 ubuntu 设置,但遇到了以下问题:
我希望脚本enter在运行时自动发送击键umake ide eclipse
(这会从终端安装 eclipse ide)。
这是在没有脚本的情况下从终端运行时的标准输出:
$ umake ide eclipse
Choose installation path: /home/gn4i/.local/share/umake/ide/eclipse
<need to press enter>
Downloading and installing requirements
通常我会用 执行此操作echo | umake ide eclipse
,但我总是收到以下错误
$ echo | umake ide eclipse
Choose installation path: Choose installation path: ERROR: Unhandled exception
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/umake/tools.py", line 158, in wrapper
function(*args, **kwargs)
File "/usr/lib/python3/dist-packages/umake/ui/__init__.py", line 42, in display
cls.currentUI._display(contentType)
File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 61, in _display
contentType.run_callback(result=rlinput(contentType.content, contentType.default_input))
File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 41, in rlinput
return input(prompt + " ")
EOFError: EOF when reading a line
我怎样才能自动化这个安装?
答案1
我设法用屏幕方法解决了这个问题。这在后台运行,我看不到进度,但这对我来说没问题
screen -d -m -S umake-eclipse
screen -S umake-eclipse -p 0 -X stuff "umake ide eclipse\n\n"
答案2
使用一个非常简单的expect
脚本:
spawn umake ide eclipse
expect "Choose installation path:" { sleep 1; send "\r" }
运行它:
$ expect -f script.expect
答案3
@Kusalananda 的答案在实践中不起作用,因为umake
命令的执行在命令之后停止send
。
这是一个扩展的工作解决方案:
#!/usr/bin/expect
spawn umake ide eclipse
expect "Choose installation path:" { send "\r" }
interact