因为我是shell脚本的初学者,并且对脚本中的模拟键盘键知之甚少。
在我的一个脚本中,我需要运行bq init
之后,它会询问一系列涉及键盘事件的问题,例如在再次按yes/no
后再按yes
yes or no
然后它要求输入像1 or 2
这样的数字。
我可以通过运行来管理按下第一个键盘按键事件
echo "y" | big init
但是对于后来的问题/关键,我一无所知。
任何人都可以帮忙....
答案 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)
答案 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”。