【发布时间】:2017-12-28 20:06:11
【问题描述】:
我正在编写一个脚本,要求您在完成输入时按control + d。我想发送这个命令,这样我就可以编写我的工作脚本,而不必重做我的工作。
【问题讨论】:
-
那么你的问题是什么?
-
Ctl-d 就是您从交互式终端发送 EOF 的方式。如果您将输入管道输入到程序,它将在管道末端获得 EOF,您不需要做任何特殊的事情。
我正在编写一个脚本,要求您在完成输入时按control + d。我想发送这个命令,这样我就可以编写我的工作脚本,而不必重做我的工作。
【问题讨论】:
您可能正在谈论用于指示用户输入结束的“传输结束”分隔符。如果是这种情况,那么您始终可以将数据通过管道传输到您的脚本中。也就是说,而不是这个:
$ test_script.sh
My input!
^D
你会将该数据写入文件:
$ cat > input
My input!
^D
然后将其导入脚本:
$ test_script.sh < input
不需要^D,因为一旦该文件被完全读取,脚本就会相应地发出信号。 < shell 操作符将 STDIN 切换为从文件而不是终端读取。同样,> 可用于捕获程序的输出并将其保存到文件中,如此处的第二步中所做的那样,尽管您可以使用任何您想要创建或编辑该输入文件的工具。
这几乎适用于任何脚本语言,从 Python、Perl、Ruby 到 Node.js 以及 bash 和其他 shell。
【讨论】: