在bash脚本中模拟ENTER键

tob*_*bbr 84 linux bash shell ubuntu

我创建了一个非常简单的bash脚本,它运行一些命令.其中一个命令需要在运行时输入用户.即它询问用户"你想要等等等等吗?",我想简单地向其发送一个回车键,以便脚本完全自动化.

我不必在运行时等待输入或任何事情,它足以发送按键,输入缓冲区将处理其余的.

Til*_*gel 121

echo -ne '\n' | <yourfinecommandhere>
Run Code Online (Sandbox Code Playgroud)

或利用echo产生的隐含换行(感谢Marcin)

echo | <yourfinecommandhere>
Run Code Online (Sandbox Code Playgroud)

  • @Marcin,我很惊讶,我得到的'0a0a`仍然没有达到预期的效果,添加了一个`-n`来取代隐含的换行符.但你当然是正确的,一个简单的`回声| ......在这里工作正常.将更新我的答案. (3认同)

pav*_*ium 38

您可能会发现该yes命令很有用.

看到 man yes

  • "是的"我发现它很有用. (46认同)
  • @BurhanAli:你可以改变'yes`发送的输出.阅读手册页. (5认同)
  • 这模拟了重复按"y"而不是Enter键.虽然这可能是你想要/不是问题,但是对于任何不期望"y"的东西都不行. (2认同)

Dav*_*ner 29

你可以使用yes.

# yes "" | someCommand
Run Code Online (Sandbox Code Playgroud)


ken*_*orb 22

以下是使用示例的示例expect:

#!/usr/bin/expect
set timeout 360
spawn my_command # Replace with your command.
expect "Do you want to continue?" { send "\r" }
Run Code Online (Sandbox Code Playgroud)

检查:man expect了解更多信息.


bar*_*ddu 11

你可以利用expect(man expect with examples).