Linux 让bash脚本回答交互式提示

Linux 让bash脚本回答交互式提示,linux,bash,automation,command-prompt,prompt,Linux,Bash,Automation,Command Prompt,Prompt,是否可以让bash脚本自动处理通常以默认操作呈现给用户的提示?目前,我正在使用bash脚本调用一个内部工具,该工具将向用户显示提示(提示Y/N)以完成操作,但是我正在编写的脚本需要完全“放手”,因此我需要一种方法将Y | N发送到提示,以允许程序继续执行。这可能吗?这不是“自动完成”,而是自动化。这些东西的一个常用工具叫做 您还可以通过一个简单的 echo "Y Y N N Y N Y Y N" | ./your_script 这允许您将任何“Y”或“N”序列传递到脚本。我发现发送输入的最佳方

是否可以让bash脚本自动处理通常以默认操作呈现给用户的提示?目前,我正在使用bash脚本调用一个内部工具,该工具将向用户显示提示(提示Y/N)以完成操作,但是我正在编写的脚本需要完全“放手”,因此我需要一种方法将
Y | N
发送到提示,以允许程序继续执行。这可能吗?

这不是“自动完成”,而是自动化。这些东西的一个常用工具叫做

您还可以通过一个简单的

echo "Y Y N N Y N Y Y N" | ./your_script

这允许您将任何“Y”或“N”序列传递到脚本。

我发现发送输入的最佳方法是使用cat和文本文件传递您需要的任何输入

cat "input.txt" | ./Script.sh

如果您只有Y要发送:

$> yes Y |./your_script
$> yes N |./your_script
如果您只需发送N:

$> yes Y |./your_script
$> yes N |./your_script

在我的情况下,我需要回答一些没有Y或N的问题,但有文本或空白。在我的情况下,我发现最好的方法是创建一个shell脚本文件。在我的例子中,我称之为autocomplete.sh

我需要为条令模式导出器回答一些问题,所以我的文件看起来像这样

--这只是一个示例--


php供应商/bin/mysql工作台模式导出mysqlworkbenchfile.mwb./doctor有一个专门的内置util用于此-“”

要用相同的答案回答所有问题,您可以运行

yes [answer] |./your_script

或者你可以把它放在你的脚本中,对每个问题都有具体的答案

不幸的是,我不能使用expect,因为它们对运行该脚本的系统有严格的空间要求,所以我不能添加额外的包,但piping
yes
中完成了这个技巧,幸运的是所有提示都只需要一个“y”。谢谢。但是,
Yes |命令
可能并不总是有效。如果只是为了安装,那么我觉得使用
-y
是一个更好的首选选项。
Expect
可以回答密码提示吗?例如,
git pull
要求我输入用户名和密码。密码没有显示在屏幕上,它是隐藏的。
Expect
可以处理吗?如果我需要发送任何
N
,我会使用这种方法,但我只需要Y,所以我选择了
yes
。可惜我不能接受两个答案,因为它们都是正确的如果你需要发送一些
N
你现在有了一个好方法;空格不算作新行——例如,如果我回显“yn”,那么它将字符串
“yn”
作为第一个提示的输入,并挂起第二个提示,等待我完成它。我尝试将空格改为换行符,但也不起作用,仍然为提示符提供了一个文本字符串。请尝试使用
printf'y\ny\n'./您的脚本
。这样,您就可以为每个预期条目手动插入换行符。
printf“%s\n”Y Y n Y Y Y n
在项目之间放置换行符,但不需要一个大格式字符串。这不是“自动完成”。。。就像@unwind所说的,这是使用
yes
来实现这一点的“自动化”示例:Expect没有像我所期望的那样工作。这是这个问题最简单也是最好的答案。我如何在脚本中做到这一点?我的意思是为每个问题指定不同的答案,这对我也很有用