Si j'exécute ces commandes à partir d'un script:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
c'est bon.
Mais si je cours:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
J'ai lu dans des tutoriels que pour substituer des variables d'environnement à partir du shell, vous devez arrêter et `` citer '' la $varname
partie afin qu'elle ne soit pas substituée directement, ce que j'ai fait et qui ne fonctionne que si la variable est définie immédiatement avant.
Comment puis-je obtenir sed pour reconnaître une $var
variable d'environnement comme il est défini dans le shell?
set -x
dans le shell pour que le shell fasse écho à chaque commande juste avant de les exécuter. Cela peut dissiper beaucoup de confusion. (En outre, j'utilise souvent set -u
pour faire du déréférencement des variables non définies une erreur difficile. (Voir set -e
aussi.))