需要在shell脚本中模拟一系列键盘按键事件

由于我是shell脚本的初学者,对脚本中的模拟键盘键不太了解。

在我的脚本之一,我需要运行, bq init后,它要求一系列的问题,涉及键盘事件如按yes/no后按yes再次询问yes or no然后它要求input数字1 or 2

我可以通过运行echo "y" | big init来pipe理按下第一个键盘按键事件 echo "y" | big init但后来的问题/键我很无能。 有人能帮忙吗….

有很多方法可以做到这一点。 这种方式看起来很直观( “heredoc” ):

 yourScript << EOF bq init yes no maybe 1 2 EOF 

或者这可能会吸引你(一个“复合陈述” ):

 { echo "yes"; echo "no"; echo "maybe"; echo "1"; } | yourScript 

或者,一行一行的说明:

 { echo "yes" echo "no" echo "maybe" echo "1" } | yourScript 

或者像这样用printf

 printf "%s\n" "yes" "no" "maybe" "1" | yourScript 

您可以将输入传送到程序。

 your_program <<< $'yes\nno\nyour_name\n' 

你可以从这里阅读更多

期待这样的工作的正确工具

期望是一个程序,根据脚本“交谈”其他交互式程序。 在脚本之后,Expect知道程序可以预期什么,以及正确的响应应该是什么。

你的脚本可能看起来像这样:

 #!/usr/bin/expect spawn "./myscript.sh" expect "First question ?" send "y\r" expect "Second question ?" send "2\r" interact 

这会产生“myscript.sh”,等待它提出“第一个问题? 并用“y”回答,然后等待“第二个问题? 并用“2”回答。