O que você quer é chamado de substituição de comando :
file=./path/to/some/file
n="$(grep -cE '[0-9]{1,4}' < "$file")"
echo "there were $n matching lines in $file"
É claro que você não precisa das aspas na tarefa, apenas n=$(...)
faria. Mas, em geral, você quer as aspas ao redor da substituição do comando. Observe também que ele come novas linhas.
Veja também: