我正在尝试以这种方式使用 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
=
。$(...)
执行命令并替换其输出。$
变量名之前。"
变量以防止结果的分词和通配符扩展。但这很可能仍然行不通,因为 tar 文件包含空字节,并且 bash 变量不能保存这个字符(它是 C 字符串终止符)。
如果您只想在出现故障时捕获错误消息,您可以执行以下操作:
tmp1=$((bzcat all.tbz | tar x) 2>&1)
if [ ! -z "$tmp1" ]
then echo "$tmp1"
fi