Wenn ich diese Befehle über ein Skript ausführe:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
es ist in Ordnung.
Aber wenn ich renne:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Ich habe in Tutorials gelesen, dass Sie zum Ersetzen von Umgebungsvariablen aus der Shell den $varnameTeil stoppen und "aus dem Anführungszeichen" setzen müssen, damit er nicht direkt ersetzt wird. Dies habe ich getan und funktioniert nur, wenn die Variable unmittelbar zuvor definiert wurde.
Wie kann ich sed dazu bringen, eine $varUmgebungsvariable zu erkennen , wie sie in der Shell definiert ist?
set -xin der Shell, damit die Shell jeden Befehl unmittelbar vor der Ausführung wiedergibt. Dies kann viel Verwirrung beseitigen. (Außerdem verwende ich oft set -u, um das De-Referenzieren von nicht gesetzten Variablen zu einem schweren Fehler zu machen. (Siehe set -eauch.))