在 bash 脚本中模拟 ENTER 按键

我已经创建了一个非常简单的 bash 脚本,它可以运行一些命令。 其中一个命令在运行时需要用户输入。例如,它会问用户“你想要什么什么吗?”,我想简单地发送一个输入键盘,以便脚本将完全自动化。

我不必在运行时期间等待输入或其他任何东西,只需发送按键就足够了,输入缓冲区将处理其余部分。

287335 次浏览
echo -ne '\n' | <yourfinecommandhere>

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

echo | <yourfinecommandhere>

您可以利用 期待(男人期望附带示例)。

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

参见 man yes

下面是使用 expect的示例用法:

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

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

你可以使用 是的

# yes "" | someCommand

我知道这很旧了,但希望有人会觉得有用。

如果您有多个用户输入需要处理,您可以使用 工序替代工序替代,并使用 echo 作为 cat 的“文件”,以及处理第一个输入所需的任何内容,如下所示:

# cat ignores stdin if it has a file to look at
cat <(echo "selection here") | command

然后你可以通过输入 是的命令和答案来处理后续的输入:

 cat <(echo "selection here") | yes 'y' | command