Bash 스크립트를 사용하여 우분투 설정을 자동화하려고 하는데 다음 문제가 발생합니다.
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
umake
@Kusalananda의 답변은 명령 실행이 명령 후에 중지되기 때문에 실제로 작동하지 않습니다 send
.
확장된 작업 솔루션은 다음과 같습니다.
#!/usr/bin/expect
spawn umake ide eclipse
expect "Choose installation path:" { send "\r" }
interact