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
umake
@Kusalanandaの答えは、コマンドの実行がコマンドの後に停止するため、実際には機能しませんsend
。
拡張された作業ソリューションは次のとおりです。
#!/usr/bin/expect
spawn umake ide eclipse
expect "Choose installation path:" { send "\r" }
interact