如何在不使用临时文件的情况下比较bash中的两个tar文件?

时间:2012-03-28 13:12:03

标签: bash

我正努力在没有温度的情况下实现这一目标。文件。

#!/bin/bash
tar ztf "$1" | sort > tmp1
tar ztf "$2" | sort > tmp2
comm -1 -3 tmp{1,2}|while read line; do echo -e "$1: $line\n"; done
comm -2 -3 tmp{1,2}|while read line; do echo -e "$2: $line\n"; done
rm tmp{1,2}

如何在没有tmp文件的情况下执行此操作?

1 个答案:

答案 0 :(得分:4)

由于您每次使用每个临时文件两次,答案几乎肯定是否定的。但是,如果您修改脚本以使用单个命令(例如commdiff),则以下内容应该有效:

diff <(tar ztf "$1" | sort) <(tar ztf "$2" | sort)

这使用process substitution

(另外,还应该使用mktemp来创建临时文件)