linux - 通过标准输入从 shell 脚本提交多个文件

标签 linux redirect shell

我有一个程序,当从命令行调用时,它从标准输入中读取。通常用户会输入一些信息,在新行上按 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/

相关文章:

c - 如何在PAM应用程序中捕获密码

php - .htaccess:多个 .htaccess 文件如何工作?

java - 如何在用户浏览器中更改 url 而无需在 servlet 中进行客户端重定向

shell - bjam : Unable to load Boost. 构建:找不到 "boost-build.jam"

c - 使用互斥锁时, "printf"输出两次(或更多?我不确定)?

linux - 如何编译在 Linux Ubuntu 中使用的驱动程序/内核模块?

linux - 通过 sudo 识别当前用户的最可靠方法

linux - 网站版本控制实践

shell - 当我不拥有文件但对目录具有写权限时,如何更改 Unix 权限?

linux - 如何在系统启动时 pull git 存储库的最新版本