sed での環境変数の置換 質問する

sed での環境変数の置換 質問する

スクリプトからこれらのコマンドを実行すると、

#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 つの例は同じように見えるため、問題の診断が困難になります。潜在的な問題:

  1. 二重引用符が必要な場合があります。sed 's/xxx/'"$PWD"'/'

  2. $PWDスラッシュが含まれている可能性があります。その場合は、区切り文字として使用する、 に含まれていない文字を見つける必要があります。$PWD

両方の問題を同時に解決するには、おそらく

sed 's@xxx@'"$PWD"'@'

おすすめ記事