cur*_*cat 7 command-line bash scripts
我正在尝试下载 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
Run Code Online (Sandbox Code Playgroud)
如您所见,该例程需要按Q。当我按下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
Run Code Online (Sandbox Code Playgroud)
有人会这么好心给我指路吗?
的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
Run Code Online (Sandbox Code Playgroud)
并man less说:
选项也取自环境变量“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
Run Code Online (Sandbox Code Playgroud)
解决方案取自@steeldriver 的评论,并根据@JamesTheAwesomeDude 的法律添加。