Intereting Posts

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

Я пытаюсь загрузить клиент 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 

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

Клавиша 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 говорит:

Параметры также берутся из переменной среды «МЕНЬШЕ».

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

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

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