从文件内容切换到STDIN的管道命令? (提供的Linux Shell)(Switch from

2019-08-18 00:00发布

我有一个程序(我没有写),这是不是设计得从一个文件中的命令来读取。 STDIN上输入命令是非常繁琐的,所以我希望能够通过在重新使用文件中写入的命令给它自动化。 麻烦的是,如果程序碰到EOF,它无限循环试图在未来的命令下探的屏幕上的菜单选项的奔流不息的阅读。

我希望能够做的就是猫通过管道包含命令到程序文件,然后使用某种神奇的外壳把它从文件STDIN切换,当它遇到文件的EOF。

注:我使用的猫已经被认为“ - ”为标准输入。 不幸的是(我不知道在这之前),管道命令等待第一个程序的输出开始第二程序之前终止 - 他们不并行运行。 如果有一些办法让程序在与那种管道的行动并行运行,将工作!

有什么想法吗? 感谢您的任何帮助!

编辑:

我要指出,我的目标不仅是为了防止系统击中的命令文件的末尾。 我希望能够继续从键盘输入的命令文件时碰到EOF。

Answer 1:

我会做类似

(cat your_file_with_commands; cat) | sh your_script

这样,当用命令的文件完成后,第二cat将与您键入的标准输入以后无论喂你的脚本。



Answer 2:

我想expect将这项工作。



Answer 3:

同Idelic答案更简单的语法;)

cat your_file_with_commands - | sh your_script


Answer 4:

您是否尝试过使用类似tail -f commandfile | command tail -f commandfile | command我认为应该管的文件,命令行没有事后关闭文件描述符。 使用-n指定是否要通过管道输送的行数tail -f没有赶上他们。



文章来源: Switch from file contents to STDIN in piped command? (Linux Shell)