linuxのsedコマンドで、環境変数の展開をしたいものと、したくないものを混在したいです。
linuxのsedコマンドで、環境変数の展開をしたいものと、したくないものを混在したいです。 具体的には、$HOGEという”文字列”(展開したくない)を$TEMPの変数の値(展開したい)で置き換えたいのですが、 'シングルクオートだと、$TEMP展開されないし、 echo \$HOGE | sed -e 's/$HOGE/$TEMP/' "ダブルクオートにして、$を\でエスケープしても、文字列とは認識されず、 変数展開している様です。 echo \$HOGE | sed -e "s/\$HOGE/$TEMP/" HOGE: 定義されていない変数です. 初歩的な問題の気がしますが、$HOGE を文字列として、認識できないでしょうか?
Linux系・38閲覧
ベストアンサー
bash と sed のバージョンによって挙動が違うみたいです。 CentOS 7 と Fedora 35 でやったらちゃんと認識しました。 ダメな場合は、\\$HOGE と2個書いてみましょう。
ご回答ありがとうございました。こちらは、Redhat8.2/sed4.5です。 \\も試したのですが、ダメなんですよね。。 echo \$HOGE | sed -e "s/\\$HOGE/$TEMP/" HOGE: 定義されていない変数です. 私はcsh使っておりました。bashだと動きますね! 同じsedなのに、呼ばれるシェルにより動きが違うなんて、初めて知りました。シェルによる影響を教えていただきありがとうございます!!
質問者からのお礼コメント
まさかのシェルが影響しているとは、思いもしませんでした。
お礼日時:1/11 14:11