【发布时间】:2017-05-01 16:43:55
【问题描述】:
我正在尝试以这种方式使用 bash 解压缩 bzip 文件
tmp1 = #(bzcat all.tbz)
echo tmp1 | tar x
但这失败了
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
但如果我这样做
bzcat all.tbz | tar x
这行得通
我之前的方法有什么问题。
谢谢!
【问题讨论】:
-
#是评论字符。为什么在(bzcat all.tbz)之前使用它? -
你似乎对基本的shell语法有几个误解。在作业中,
=周围不能有空格。在变量之前需要$。要执行命令并返回输出,请使用$(command),而不是#(command)。 -
并且由于
bzcat的输出包含空格,你应该引用变量。 -
另外,bzip 文件的内容包含二进制信息,其中可能包含空字节。 Bash 变量中不能有 null,所以这不起作用。[
-
同意,开始将任意二进制数据存储在 bag 变量中通常是个坏主意。而且你无论如何也不想要它。 Bzip2 是我认为的块压缩算法。你希望压缩数据的蒸汽在运行中被解压缩,当内容变得太大时,你最终会耗尽内存。在不存储到变量的情况下通过管道输入文件更有意义。