Разархивировать bzip файл используя bash
Я пытаюсь распаковать bzip файл, используя bash таким образом
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 ответ
Решение
У вас есть множество синтаксических ошибок.
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