Se eu executar esses comandos a partir de um script:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
está bem.
Mas, se eu correr:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Eu li em tutoriais que para substituir variáveis de ambiente do shell, é necessário parar e 'citar' a $varname
parte para que não seja substituída diretamente, o que eu fiz e que funcionará apenas se a variável for definida imediatamente antes.
Como posso o sed reconhecer uma $var
variável de ambiente conforme definida no shell?
set -x
no shell para fazer com que o shell ecoe cada comando antes de executá-los. Isso pode esclarecer muita confusão. (Além disso, muitas vezes eu uso set -u
para fazer de-referenciando variáveis unset um erro de disco (Veja. set -e
Também).)