Você não pode especificar o redirecionamento como parte do valor da string da variável.
O shell faz alguma avaliação adicional na entrada quando você insere algo diretamente na linha de comando, e isso não acontece para valores de string. >> é apenas outro argumento para gunzip .
$ CMD="echo >> foo"
$ $CMD
>> foo
Você pode usar eval . No exemplo, eval $CMD redirecionaria corretamente a saída echo para o arquivo foo . Observe que isso pode introduzir problemas com entradas inesperadas.