走ろうとしています。
sed -i "/$variable/c \$variable1' file.txt
ただし、ファイルの変更は表示されませんfile.txt
。
しかし、同じコマンドは変数なしでうまく機能します。
sed -i "/variable/c \variable1' file.txt
答え1
このように:
sed -i "/$variable/c \\${variable}1" file.txt
多様性:
\
a 前に one がある場合、$
シェルは$
文字列にリテラルを挿入します。代わりに、atリテラルが印刷さ\
れるように最初の項目をエスケープする追加の項目を追加してください。\
変数の後に文字または数字が続くと、
{...}
存在しない変数と変数を区別するために名前を囲みますvariable1
(変数が存在しない場合、シェルは短い名前を見つけるのではなく何も拡張しません)。引用と一貫性を維持するために始まるので!
"
で終わらないでください。'
それにもかかわらず、変数は二重引用符内でのみ拡張できます。
このようなものをデバッグするには、echo
次のコマンドを使用して出力を表示すると、何が間違っているかを確認できます。
echo sed -i "/$variable/c \$variable1" file.txt
それを比較してください。
echo sed -i "/$variable/c \\${variable}1" file.txt