由于我是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”回答。