使用 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
- 作业中
=
. 两边不能有空格
- 使用
$(...)
执行命令并替换其输出。
- 回显时在变量名前加上
$
。
- 在变量周围放置
"
以防止结果的分词和通配符扩展。
但这很可能仍然行不通,因为 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
我正在尝试使用 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
见Bash script - store stderr in a variable