Jeśli uruchomię te polecenia ze skryptu:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
w porządku.
Ale jeśli uruchomię:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Czytam w tutorialach, że aby zastąpić zmienne środowiskowe z powłoki, musisz przestać i „wycenić” tę $varname
część, aby nie została ona podstawiona bezpośrednio, co zrobiłem i która działa tylko wtedy, gdy zmienna jest zdefiniowana bezpośrednio wcześniej.
Jak sprawić, by sed rozpoznał $var
zmienną środowiskową zdefiniowaną w powłoce?
set -x
w powłoce, aby powłoka echa każdego polecenia tuż przed ich wykonaniem. To może rozwiązać wiele nieporozumień. (Ponadto często używam, set -u
aby set -e