linux将文件内容作为stdio传递给管道

时间:2013-08-07 18:48:31

标签: linux bash

我有一个linux命令,它读取stdio并每小时生成一个简单的文件:

myapp > ~/$( date "+%Y%m%d%H.txt" )

然后,因为myapp可以读取stdio明文文件并且我的输入文件是压缩的,所以我使用zcat读取文件并将它们发送到以前的处理:

zcat myfile.zip | myapp > ~/$( date "+%Y%m%d%H.txt" )
到目前为止,一切都很好。问题是我需要读取该变量名文件并继续处理它,例如,将文件内容发送到'head'命令。我试着:

head $( zcat myfile.zip | myapp > ~/$( date "+%Y%m%d%H.txt" ) )

没有成功。我真的不想创建另一个变量,因为这个过程可能需要1个多小时才能完成......也许我会在头部获得一个不同的文件名变量:

zcat myfile.zip | myapp > ~/$( date "+%Y%m%d%H.txt" ) ) && head ~/$( date "+%Y%m%d%H.txt" )

那么,您认为最好的方法是什么?

谢谢大家。

3 个答案:

答案 0 :(得分:2)

使用tee

zcat myfile.zip | myapp | tee ~/$( date "+%Y%m%d%H.txt" ) | head

答案 1 :(得分:1)

将文件名存储在变量中:

filename=~/$( date "+%Y%m%d%H.txt" ); zcat myfile.zip | myapp > $filename && head $filename

答案 2 :(得分:1)

为什么不先将它存储在变量上?

FILENAME=$( date "+%Y%m%d%H.txt" )
zcat myfile.zip | myapp > ~/"$FILENAME" && head ~/"$FILENAME"