$NUMBER
フォームのsed
でシェル変数を使用できません。シェルスクリプトに次の行があります。
cat shared.txt sed 's/whatever1/$2 ... whatever2/' > shared2.txt
shared2.txt
の結果は次のようになります。
...$2....
何を間違えたのですか?
一重引用符の代わりに二重引用符を使用してみてください。
sed "s/whatever1/$2 ... whatever2/" shared.txt > shared2.txt
二重引用符を使用しても問題はありませんが、これでは期待どおりの結果にならない場合があります。例えば、
t="bcd"
echo '123$tbcd' | sed "s/$t$t//"
(はい、これは多少不自然です!)これは、特定の文字をエスケープすることで回避できます。
echo '123$tbcd' | sed "s/\$t$t//"
しかし、これを見逃すのは簡単です。私の意見では、最も安全な方法は、変数を二重引用符で囲み(スペースによってsedコマンドが妨げられないようにする)、残りの文字列を単一引用符で囲むことです(特定の文字をエスケープする必要を避けるため)。
echo '123$tbcd' | sed 's/$t'"$t"'//'.