使用bash解压缩bzip文件

时间:2016-12-15 23:30:52

标签: bash bzip2 bzip

我试图以这种方式使用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

并且有效

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

谢谢!

1 个答案:

答案 0 :(得分:2)

你有很多语法错误。

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