将二进制输出从文件输出重定向到标准输出

4

我有一个专有的二进制文件,它执拗地接受两个文件作为参数,第一个文件作为输入,第二个文件作为输出。我想要:

  1. 构建第一个参数而不创建临时文件
  2. 使二进制文件写入标准输出而不是输出文件(第二个参数)

我用 <(...) 解决了第一个问题,但对于第二个参数不确定。

我编写了以下脚本,看起来可以按预期完成所有操作:

FILE1=$1
FILE2=$2

# checking that the files exist and other stuff

mkfifo myfifo

ThatBinary <( ... ) myfifo &

cat myfifo

二进制文件的第一个参数是一个组合的 Bash 命令,用于构建第一个“文件”。第二个参数是必须写入的命名管道。由于写入到FIFO会阻塞,所有这一切都被发送到后台。最后,我将命名管道的输出打印到stdout,如所需。

有没有可能改善这个指令呢?是否存在任何隐藏的陷阱?我正在处理非常大的文件(数十万个文本行),希望确保我没有漏掉任何东西。

1个回答

3
ThatBinary <(...) /dev/stdout

很奇怪,我无法将脚本的标准输出重定向到文件。错误消息显示“IOError: [Errno 20] Not a directory: '/dev/stdout'”。 - Vladislavs Dovgalecs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接