Uma variável com aspas como um comando sed produz um erro

1

Eu tenho este script:

num='[0-9]'
sedcmd='-e "s/${num}/as df/g"'
echo 123 | sed -r $sedcmd

A última linha produz isso:

sed: -e expression #1, char 1: unknown command: '"'

O que eu senti falta?

    
por Lumify 21.10.2017 / 07:54

1 resposta

1

Não use uma variável para armazenar comandos do shell, use um array. Veja BashFAQ-50 Estou tentando colocar um comando em uma variável, mas os casos complexos sempre falham.

Você acabou de usar uma matriz como abaixo

num='[0-9]'
argArray=('-e' "s/${num}/as df/g")

e aspas duplas na expansão da matriz para não permitir que as palavras sejam divididas por divisão de palavras e chamadas como

echo 123 | sed -r "${argArray[@]}"
    
por 21.10.2017 / 08:04