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