我试图以这种方式使用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
并且有效
我之前的方式有什么问题。
谢谢!
答案 0 :(得分:2)
你有很多语法错误。
tmp1=$(bzcat all.tbz)
echo "$tmp1" | tar x
=
周围留出空格。$(...)
执行命令并替换其输出。$
放在变量名之前。"
以防止结果的分词和通配符扩展。但是这很可能仍然没有用,因为tar文件包含空字节,而bash变量不能保存这个字符(它是C字符串终结符)。
如果您只想在失败时捕获错误消息,可以执行以下操作:
tmp1=$((bzcat all.tbz | tar x) 2>&1)
if [ ! -z "$tmp1" ]
then echo "$tmp1"
fi