Если я запустил эти команды из скрипта:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
это нормально.
Но если я побегу:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Я читал в учебных пособиях, что для замены переменных среды из оболочки вам нужно остановить, и "цитата" часть $varname
, чтобы она не заменялась напрямую, что я и сделал, и которая работает только в том случае, если переменная определена непосредственно перед этим.
Как я могу заставить sed распознавать $var
как переменную среды, как она определена в оболочке?
set -x
в оболочке, чтобы оболочка отображала каждую команду непосредственно перед их выполнением. Это может устранить большую путаницу. (Кроме того, я часто используюset -u
, чтобы сделать разыменование неустановленных переменных серьезной ошибкой. (См. Такжеset -e
.)) - person bobbogo   schedule 15.08.2012