我有两个用Prog1.c
编写的程序(Prog2.c
和C
),每个程序都有一个命令行参数。Prog1.c
将文件名作为参数,从文件中读取内容并在STDOUT
(标准输出)屏幕上输出Prog2.c
将数据作为参数并执行一些操作我想将Prog1.c
的输出重定向到Prog2.c
作为输入。
我试过遵循bash脚本,这会给我错误
#!/bin/bash
prog2 "`prog1 file.txt`"
我也试过不加引号,在这两种情况下,都会出现以下错误。
Prog2:: argument list too long.
最佳答案
要将命令的输出作为另一个命令的参数,可以使用反勾号:
prog2 "`prog1 file.txt`"
或者使用
$()
(我相信这是bash的一种更可取的方式):prog2 "$(prog1 file.txt)"
如果要将prog1的STDOUT用作prog2的STDIN,请使用|(pipe)运算符:
prog1 | prog2
注意:当您想使用管道时,您需要修改prog2的代码,因为它需要从STDIN读取而不是命令参数(
argv
函数的main()
)有关如何执行此操作的示例,请参见How to read a line from the console in C?。