ubuntu 在bash脚本中模拟按Enter键

nkkqxpd9  于 2022-11-02  发布在  其他
关注(0)|答案(6)|浏览(309)

我已经创建了一个非常简单的bash脚本,它运行几个命令。其中一个命令需要用户在运行时输入。例如,它会问用户“你想不想等等等等?",我想简单地发送一个回车键到这个,这样脚本将完全自动化。
我将不必等待输入或任何在运行时,它足以只是发送按键和输入缓冲区将处理其余的。

ycggw6v2

ycggw6v21#

echo -ne '\n' | <yourfinecommandhere>

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

echo | <yourfinecommandhere>
34gzjxbg

34gzjxbg2#

您可以只使用yes


# yes "" | someCommand
brqmpdu1

brqmpdu13#

您可能会发现yes命令很有用。
请参阅man yes

gojuced7

gojuced74#

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


# !/usr/bin/expect

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

检查:man expect以获取更多信息。

de90aj5v

de90aj5v5#

您可以使用expectman expect 附带示例)。

pftdvrlh

pftdvrlh6#

我知道这是旧的,但希望,有人会发现这有帮助。
如果你有多个用户输入需要处理,你可以使用process substitution,并使用echo作为cat的一个“文件”,处理第一个输入所需的任何东西,如下所示:


# cat ignores stdin if it has a file to look at

cat <(echo "selection here") | command

然后您可以通过使用yes命令处理后续的输入,该命令的答案为:

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

相关问题