Execute o comando dentro da variável não funciona para sed

3

isso funciona para mim:

CMD="ls -la"
$CMD

enquanto isso sempre falha:

CMD="sed -e 's|abc|abc|g' file"
$CMD

com a mensagem de erro:

sed: -e expression #1, char 1: unknown command: '''
    
por ladiko 09.02.2017 / 17:14

1 resposta

3

Isso porque, quando você insere o comando na linha de comando, o shell executa "expansões" nele. A última etapa é "Remoção de cotações", mas apenas remove as cotações que não resultaram de nenhuma expansão. (Veja EXPANSÕES em man bash para detalhes.) Aqui, as aspas fazem parte da expansão da variável, então elas não são removidas.

Você pode inserir a substituição sem aspas para que funcione:

cmd='sed -e s|abc|abc|g file'
$cmd
    
por 09.02.2017 / 17:26