1

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

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 小时才能完成。也许我会在 head 中得到一个不同的文件名变量:

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

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

谢谢大家。

4

3 回答 3

2

使用tee

zcat myfile.zip | myapp | tee ~/$( date "+%Y%m%d%H.txt" ) | head
于 2013-08-07T18:54:29.900 回答
1

将文件名存储在变量中:

filename=~/$( date "+%Y%m%d%H.txt" ); zcat myfile.zip | myapp > $filename && head $filename
于 2013-08-07T18:57:15.143 回答
1

为什么不先将其存储在变量中?

FILENAME=$( date "+%Y%m%d%H.txt" )
zcat myfile.zip | myapp > ~/"$FILENAME" && head ~/"$FILENAME"
于 2013-08-07T18:58:06.727 回答