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

时间:2017-09-13 08:48:45

标签: shell unix

因为我是shell脚本的初学者,并且对脚本中的模拟键盘键知之甚少。

在我的一个脚本中,我需要运行bq init之后,它会询问一系列涉及键盘事件的问题,例如在再次按yes/no后再按yes yes or no然后它要求输入像1 or 2这样的数字。

我可以通过运行来管理按下第一个键盘按键事件 echo "y" | big init但是对于后来的问题/关键,我一无所知。 任何人都可以帮忙....

3 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。这种方式看似直观(“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

答案 1 :(得分:0)

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

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

您可以从here

了解更多信息

答案 2 :(得分:0)

这样的工作的正确工具是expect

  

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

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

#!/usr/bin/expect

spawn "./myscript.sh"

expect "First question ?" 
send "y\r"

expect "Second question ?"
send "2\r"

interact

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