Citação Bash do caminho atual (pwd)
-
21-09-2019 - |
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?
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