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.