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