Ich versuche, den Teamspeak 3-Client herunterzuladen und gleichzeitig die Lizenzvereinbarung zu akzeptieren. Ich weiß, wie man vor dem Skript ein „Ja“ eingibt, aber die Routine erfordert, dass ich drücke, um Qdie „Lizenzvereinbarung“ zu beenden, bevor ich auf die YTaste klicke, um mit dem Entpacken des Clients zu beginnen.
#!/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 man sieht, muss bei der Routine zuerst gedrückt werden Q. Wenn ich drücke Q, Ywird anschließend automatisch gedrückt und die Dateien werden dekomprimiert.
+ 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äre jemand so freundlich, mir den Weg zu zeigen?
Antwort1
Der qTastendruck dient als Quit-Signal für den Pager less
, welches vom Skript explizit verwendet wird:
read FOO
echo "$licensetxt" | less
while true
do
MS_Printf "Please type y to accept, n otherwise: "
read yn
if test x"$yn" = xn; then
keep=n
eval $finish; exit 1
break;
elif test x"$yn" = xy; then
break;
fi
done
Undman less
sagt:
Optionen werden ebenfalls aus der Umgebungsvariable „LESS“ übernommen.
Legen Sie diese Umgebungsvariable wie folgt fest:
printf '\ny\n' | LESS='+q' ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Lösung entnommen ausKommentar von @steeldriverund hinzugefügt gemäßdas Gesetz von @JamesTheAwesomeDude.