it-swarm.com.de

Automatisches Übergeben eines "q" vor einem Y in einer Befehlszeile

Ich versuche, den teamspeak 3-Client herunterzuladen und gleichzeitig die Lizenzvereinbarungsroutine zu akzeptieren. Ich weiß, wie man vor dem Drehbuch ein "Ja" gibt, aber die Routine erfordert, dass ich drücke Q um die "Lizenzvereinbarung" zu beenden, bevor Sie auf die Schaltfläche klicken Y Taste, 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, erfordert die Routine das Drücken von Q zuerst. Wenn ich drücke QY wird dann automatisch gedrückt und die Dateien 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?

7
curiouscat

Das q Tastendruck dient als Beendigungssignal für den Pager less, der 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
_

Und man less sagt:

Die Optionen werden auch aus der Umgebungsvariablen "LESS" übernommen.

Stellen Sie diese Umgebungsvariable wie folgt ein:

_printf '\ny\n' | LESS='+q' ./TeamSpeak3-Client-linux_AMD64-3.0.19.4.run
_

Die Lösung stammt aus @ steeldrivers Kommentar und wurde gemäß dem Gesetz von @JamesTheAwesomeDude hinzugefügt.

5
dessert