tar e if-statement

3

Eu tenho um script que verifica se existe um arquivo dentro de um arquivo tar, mas algo está errado, porque ele sempre vai para a parte else do script. Tenho certeza de que não deveria ser assim.

A data está no formato "Mon dd" (11 de janeiro).

echo "enter date: \c"
read date
tarfile='tar -tvf tarfile.tar | grep some_file | grep "$date"'

if [ -f "$tarfile" ]; then
    echo "yes"
    else
    echo "no"
fi
    
por bee 22.10.2013 / 05:03

1 resposta

6

Você está verificando se o arquivo existe usando -f , mas não é isso que você deseja fazer. O arquivo existe no arquivo tar, mas -f não tem como ler sozinho dentro dos arquivos tar. Por exemplo, se seu arquivo está em "foo / bar" dentro do arquivo tar, ele irá procurar por "foo / bar" em relação ao seu diretório atual, o que não existe.

A melhor maneira é apenas verificar o status de saída de grep , em vez de tentar analisar a saída.

printf 'enter date: '
read date
if tar -tvf tarfile.tar | grep some_file | grep -q "$date"; then
    echo yes
else
    echo no
fi
    
por 22.10.2013 / 05:16