sed は変数を使用してファイル内のテキストを置換できません

sed は変数を使用してファイル内のテキストを置換できません

ディレクトリ内に存在するすべてのjsファイルの文字列を置き換えたい

export name="test_user" &&
echo $customerName &&
sed -i -- 's/this.NAME=""/this.NAME=\"'$name'\"/g' *.js

スペースを使用しない場合は正常に動作しますが、上記の文字列を使用するとコマンドが失敗します

答え1

's/this\.NAME=""/this.NAME="'"$name"'"/g'

パートに分けます:

  1. 's/this\.NAME=""/this.NAME="'
  2. "$name"重要なのは、変数の展開を引用符で囲む必要があるということです。
  3. '"/g'

\"また、置換で を使用し、それが一重引用符で囲まれている場合は、結果に\"ではなく が挿入されます。"

また、 という変数も使用しているようですcustomerName。これはタイプミスだと思います。

sedあなたが使用している が、あなたが望むような方法でインプレース編集を実行できるかどうかはわかりません。

関連している:

関連情報