スクリプトからこれらのコマンドを実行すると、
#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
。これは私が行った方法であり、変数が直前に定義されている場合にのみ機能します。
$var
シェルで定義されている環境変数をsed に認識させるにはどうすればよいですか?
ベストアンサー1
2 つの例は同じように見えるため、問題の診断が困難になります。潜在的な問題:
二重引用符が必要な場合があります。
sed 's/xxx/'"$PWD"'/'
$PWD
スラッシュが含まれている可能性があります。その場合は、区切り文字として使用する、 に含まれていない文字を見つける必要があります。$PWD
両方の問題を同時に解決するには、おそらく
sed 's@xxx@'"$PWD"'@'