Se eseguo questi comandi da uno script:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
va bene.
Ma, se corro:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Ho letto nei tutorial che per sostituire le variabili di ambiente dalla shell è necessario interrompere e "citare" la $varname
parte in modo che non venga sostituita direttamente, cosa che ho fatto e che funziona solo se la variabile è stata definita immediatamente prima.
Come posso convincere sed a riconoscere una $var
variabile d'ambiente come definita nella shell?
set -x
nella shell per fare in modo che la shell esegua l'eco di ciascun comando appena prima di eseguirli. Questo può chiarire molta confusione. (Inoltre, uso spesso set -u
per rendere de-referencing variabili unset un errore set -e