Auto Передача «q» перед Y в командной строке

7

Я пытаюсь загрузить клиент teampeak 3 и одновременно принять процедуру лицензионного соглашения. Я знаю, как передать «да» перед скриптом, но для выполнения этой процедуры мне нужно нажать Q , чтобы выйти из «лицензионного соглашения», прежде чем нажать клавишу Y , чтобы начать распаковку клиента.

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

Как вы можете видеть, для выполнения процедуры требуется сначала нажать Q . Когда я нажимаю Q , затем автоматически отжимается Y и файлы распаковываются.

+ 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

Кто-нибудь будет так добр, показывая мне путь?

    
задан curiouscat 05.09.2016 в 12:40
источник

1 ответ

5

Клавиша q служит в качестве выходного сигнала для пейджера less , который явно используется сценарием:

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

И man less говорит:

  

Параметры также берутся из переменной окружения "LESS".

Задайте эту переменную среды следующим образом:

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

Решение взято из @ комментарий steeldriver и добавлен в соответствии с закон @JamesTheAwesomeDude .

    
ответ дан dessert 26.11.2017 в 21:09