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)