我有一个程序,当从命令行调用时,它从标准输入中读取。通常用户会输入一些信息,在新行上按 C-d 以表示文件结束,然后程序会处理该文件。然后用户会再次收到提示,输入更多文本,然后再次按 C-d 表示第二个文件结束。
我正在寻找一个 shell 脚本来调用这个程序并自动提交这两个文件。我想做这样的事情:
$ myprogram < file1.txt < file2.txt
或
$ myprogam <file1.txt file2.txt
有什么建议吗?我在 Linux 下使用 bash shell。
最佳答案
显然,您可以使用 cat
将两个文件发送到程序标准输入,但这可能不是您想要的:
$ cat file1.txt file2.txt | myprogram
在上面的例子中,myprogram
无法判断 file1.txt
在哪里结束,file2.txt
在哪里开始,除非他们有特定格式,并且它正在监视流以查找表示文件结束或开始的特定格式。
没有将多个流发送到标准输入的标准方法。本质上只有一个流进入标准输入。
您可能会构造您的脚本,使其在命令行上接受多个参数,并在内部一次打开和处理它们。也就是说,您可以这样调用它:
$ myprogram file1.txt file2.txt
关于linux - 通过标准输入从 shell 脚本提交多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487319/