Pasar automáticamente una "q" antes de una Y en una línea de comando

Pasar automáticamente una "q" antes de una Y en una línea de comando

Estoy intentando descargar el cliente Teamspeak 3 y aceptar la rutina del acuerdo de licencia, todo al mismo tiempo. Sé cómo pasar un "sí" antes del script, pero la rutina requiere que presione Qpara salir del "acuerdo de licencia" antes de hacer clic en la Ytecla para comenzar a descomprimir el cliente.

#!/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

Como puedes ver, la rutina requiere presionar la Qprimera. Cuando presiono Q, Yse presiona automáticamente y los archivos se descomprimen.

+ 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

¿Alguien sería tan amable de mostrarme el camino?

Respuesta1

La qpulsación de tecla sirve como señal de salida para el buscapersonas less, que el script utiliza explícitamente:

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

Yman lessdice:

Las opciones también se toman de la variable de entorno "MENOS".

Establezca esta variable de entorno de la siguiente manera:

printf '\ny\n' | LESS='+q' ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run

Solución tomada deEl comentario de @steeldrivery añadido segúnla ley de @JamesTheAwesomeDude.

información relacionada