Pergunta

Eu encontrei um problema muito chato que ocorre no PWD variável quando o caminho atual inclui um espaço.Meu código é mais ou menos assim:

mycommand |sed -E '  
 s|mystuff|replacement| ;  
 s|'$(pwd)'|replacement| ;  
 '

Isso funciona muito bem, a menos que o caminho atual contenha um caractere de espaço.Se isso acontecer, $(pwd) é expandido para

'mypath/with space'
em vez de apenas
mypath/with space

Isso faz com que a expressão sed fique confusa (por causa das aspas extras):

sed: 1: "s|mypath/with": unterminated substitute pattern

Percebi que não ajuda expandir o pwd assim: ${PWD//\'/}.

Alguma idéia de como isso pode ser resolvido?

Foi útil?

Solução

Substitua aspas simples por aspas duplas e substitua aspas por crases em torno de pwd:

mycommand | sed -E "
 s|mystuff|replacement| ;
 s|`pwd`|replacement| ;
"

As aspas duplas permitem a expansão de variáveis ​​e comandos entre aspas.

Outras dicas

O que acontece se você substituir

'$(pwd)'

com

'"$(pwd)"'

Ficaria assim então:

mycommand | sed -E '  
 s|mystuff|replacement| ;  
 s|'"$(pwd)"'|replacement| ;  
 '
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top