Auto Passando um “q” antes de um Y em uma linha de comando

7

Estou tentando fazer o download do client teamspeak 3 e aceitar a rotina do contrato de licença, tudo ao mesmo tempo. Eu sei como passar um “sim” antes do script, mas a rotina requer que eu pressione Q para sair do “contrato de licença” antes de clicar na tecla Y para iniciar a descompactação do 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 você pode ver, a rotina requer o pressionamento de Q primeiro. Quando pressiono Q , Y é pressionado automaticamente e os arquivos são descompactados.

+ 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

Alguém seria tão gentil em me mostrar o caminho?

    
por curiouscat 05.09.2016 / 14:40

1 resposta

5

O keypress q serve como um sinal de saída para o pager less , que é explicitamente usado pelo script:

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

E man less diz:

  

As opções também são tiradas da variável de ambiente "LESS".

Defina esta variável de ambiente da seguinte forma:

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

Solução tirada de @ comentário da steeldriver e adicionado de acordo com a lei do @JamesTheAwesomeDude .

    
por dessert 26.11.2017 / 22:09