使用 bash 解压缩 bzip 文件

unzipping bzip file using bash

我正在尝试使用 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

这行得通

我之前的方法有什么问题。

谢谢!

你有很多语法错误。

tmp1=$(bzcat all.tbz)
echo "$tmp1" | tar x
  1. 作业中 =.
  2. 两边不能有空格
  3. 使用$(...)执行命令并替换其输出。
  4. 回显时在变量名前加上$
  5. 在变量周围放置 " 以防止结果的分词和通配符扩展。

但这很可能仍然行不通,因为 tar 文件包含空字节,并且 bash 变量不能保存此字符(它是 C 字符串终止符)。

如果您只想在出现故障时捕获错误消息,您可以这样做:

tmp1=$((bzcat all.tbz | tar x) 2>&1)
if [ ! -z "$tmp1" ]
then echo "$tmp1"
fi

Bash script - store stderr in a variable