Joh*_*man 18
最简单的解决方案是组合两个 echo 命令。
echo $'y\nresponse' | ./command.pl
Run Code Online (Sandbox Code Playgroud)
用单引号和 a$在前面写一个字符串告诉 bash 解释转义序列,如\n.
如果您正在使用管道的命令更复杂,您可以用花括号将它们分组。
{ echo y; echo response; } | ./command.pl
Run Code Online (Sandbox Code Playgroud)
括号也可以使用,尽管它们会创建一个不必要的额外子外壳(效率低下)。
(echo y; echo response) | ./command.pl
Run Code Online (Sandbox Code Playgroud)
另一种选择是过程替换。
./command.pl < <(echo y; echo response)
Run Code Online (Sandbox Code Playgroud)
您是否尝试将两个答案组合在一个echo由换行符分隔的单个答案中?
echo -e "response\ny" | ./command.pl
Run Code Online (Sandbox Code Playgroud)
请注意,-e必须使用标志bash来启用反斜杠转义的解释(除非bash处于 Unix 一致性模式)。
或者更便携:
echo 'response
y' | ./command.pl
Run Code Online (Sandbox Code Playgroud)
或者:
printf 'response\ny\n' | ./command.pl
Run Code Online (Sandbox Code Playgroud)
或者:
printf '%s\n' response y | ./command.pl
Run Code Online (Sandbox Code Playgroud)
编辑:
我忘了提及,但您的初始命令的问题是它echo不通过其 STDIN 接受任何输入。命令的输出echo "y"从未达到./command.pl。