Ich versuche, den Teamspeak 3-Client herunterzuladen und gleichzeitig die Lizenzvereinbarungsroutine zu akzeptieren. Ich weiß, wie man vor dem Skript ein "Ja" übergibt, aber die Routine erfordert, dass ich drücke Q, um die "Lizenzvereinbarung" zu beenden, bevor ich auf die YTaste klicke, um das Entpacken des Clients zu starten.
#!/bin/bash
cd /home/test/ts3_client_files
wget http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
yes 'y' | ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Wie Sie sehen können, erfordert die Routine das Drücken von Qzuerst. Wenn ich drücke Q, Ywird dann automatisch gedrückt und die Dateien dekomprimieren.
+ cd /home/test/ts3_client_files
+ wget http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
--2016-09-05 08:33:26-- http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Resolving dl.4players.de (dl.4players.de)... 85.25.26.25, 85.25.26.26, 85.25.26.27
Connecting to dl.4players.de (dl.4players.de)|85.25.26.25|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37054436 (35M) [application/x-makeself]
Saving to: ‘TeamSpeak3-Client-linux_amd64-3.0.19.4.run’
100%[=============================>] 37,054,436 9.56MB/s in 7.1s
2016-09-05 08:33:34 (4.96 MB/s) - ‘TeamSpeak3-Client-linux_amd64-3.0.19.4.run’ saved [37054436/37054436]
+ chmod 0700 TeamSpeak3-Client-linux_amd64-3.0.19.4.run
+ yes y
+ ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Welcome to the TeamSpeak 3 Client for Linux on amd64 installer
In order to install this software you are required to accept the license
agreement, please press return to view the license.
You can scroll with the arrow keys and quit the viewer by pressing 'q'.
[RETURN]
Please type y to accept, n otherwise: Creating directory TeamSpeak3-Client-linux_amd64
Verifying archive integrity... All good.
Uncompressing TeamSpeak 3 Client for Linux on amd64 100%
+ exit
Würde mir jemand so freundlich den Weg zeigen?
command-line
bash
scripts
neugierige Katze
quelle
quelle
yes 'qy'
. Andernfalls überprüfen Sieexpect
: linux.die.net/man/1/expecty
Antwort erforderlich ist, sollten Sie diese nicht benötigenyes
. versuchenprintf 'qy\n'
q
als Beendigungssignal für denless
Pager verarbeitet werden soll, der zum Anzeigen des Textes verwendet wird. es stellt sich heraus, dass der Trick hier zu sehr darin besteht, ihn als Befehlszeilenoption anless
ieprintf '\ny\n' | LESS='+q' ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Antworten:
Der qTastendruck dient als Beendigungssignal für den Pager
less
, der vom Skript explizit verwendet wird:Und
man less
sagt:Stellen Sie diese Umgebungsvariable wie folgt ein:
Die Lösung stammt aus dem Kommentar von @ steeldriver und wurde gemäß dem Gesetz von @JamesTheAwesomeDude hinzugefügt .
quelle