【发布时间】:2016-12-08 05:29:09
【问题描述】:
有没有办法在 bash 脚本中模拟 ENTER 键,通过 here-document (EOF) 将值输入到代码中。在 bash 中很容易实现,请参阅 question 6264596。
伪代码:
#!/bin/bash
code_executable << EOF
value1
value2
EOF
value2 后面需要回车,即从 shell 执行时输入。
谢谢大家。
模拟在终端上运行的可执行文件:
$./code_executable
>Do you want to continue? yes or no
User: y
>Enter number:
User: 314
如果用户在输入 314 后没有按键盘上的 ENTER,则可执行文件挂起/暂停并等待。
编辑:查看标准输入缓冲中的异常,这些异常阻止 EOF 将参数传递给可执行文件,如下面的@that other guy answer所示。
【问题讨论】:
-
您是否只想在
value2之后但EOF之前有一个空行? -
@chepner:我不确定。我在
value2和 EOF 之间添加了一个文字空白行,但仍未解决,可执行文件无法获取value2。 -
也许可执行文件中存在错误?使用问题中所示的脚本,可执行文件应该看到一行
"value1\n",然后是一行"value2\n",然后是一个文件结束条件。在value2和EOF之间添加一个空行应该给可执行文件一个额外的行"\n"。当您自己运行可执行文件并从键盘输入时会发生什么? -
@Keith Thompson:可执行文件中没有错误。
value1是在不等待回车的情况下获取的,而value2不是。从终端运行时会发生这种情况:询问value1,然后在“键入”时,后者立即按照指令估算value2,直到键入ENTER。 -
可能
code_exacutable是FTP.EXE或类似的?从 /dev/tty 读取的程序不能以这种方式重定向。