Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 让bash脚本回答交互式提示_Linux_Bash_Automation_Command Prompt_Prompt - Fatal编程技术网

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" | .

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

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

您还可以通过管道输入从

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

您还可以通过一个简单的

echo "Y Y N N Y N Y Y N" | ./your_script
这允许您将任意“Y”或“N”序列传递给脚本。

一个简单的

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

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

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

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

我发现发送输入的最好方法是使用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要发送:

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

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

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

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

--这只是一个示例--


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

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

--这只是一个示例--


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

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

yes [answer] |./your_script

或者你可以把它放在你的脚本中,对每个问题都有具体的答案,这里面有一个特殊的内置util-“”

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

yes [answer] |./your_script


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

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