value='$(gunzip … | wc -l)'
Você está usando uma substituição de comando imediatamente dentro de outra substituição de comando. O comando gunzip … | wc -l imprime 0 (o que significa que o grep não encontra nada), portanto $(gunzip … | wc -l) expande para 0 e '$(gunzip … | wc -l)' executa o comando 0 .
A correção é obviamente usar a substituição de comando, não a substituição de comando de uma substituição de comando.
value=$(gunzip … | wc -l)