1. ホーム
  2. linux

[解決済み】sedでの環境変数の置換

2022-04-05 02:15:09

質問

スクリプトからこれらのコマンドを実行した場合。

#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 をシェルで定義された環境変数として使用することはできますか?

どのように解決するのですか?

2つの例は同じに見えるので、問題を診断するのが難しいです。 潜在的な問題

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

  2. $PWD はスラッシュを含む可能性があり、その場合、文字 ではなく に含まれる $PWD をデリミタとして使用します。

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

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