Если я запускаю эти команды из скрипта:
#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