15

いくつかの値のペアを持つスクリプトの行番号の後に行を追加するために、bashスクリプトにsedを使用する必要があります(作業の下)

sed -i.bak '14i\some_text=some_text' file

しかし、変数を展開するためにスクリプトbash(sh)が必要です(以下では機能しません)

sed -i.bak '$number_linei\$var1=$var2' $var3
4

2 に答える 2

25

一重引用符の代わりに二重引用符を使用してください。また、変数を正しく{}区切り、もエスケープするために使用する必要があります。number_line\

sed -i.bak "${number_line}i\\$var1=$var2" $var3

個人的には、すべての変数が を使用し{}、最終的に次のようになることを望みます。

sed -i.bak "${number_line}i\\${var1}=${var2}" ${var3}
于 2013-07-04T20:48:13.087 に答える
4

一重引用符を二重引用符に変更します。

man bash:

   Enclosing  characters  in  single quotes preserves the literal value of
   each character within the quotes.

   Enclosing  characters  in  double quotes preserves the literal value of
   all characters within the quotes, with the exception of $, `,  \,  and,
   when  history  expansion  is enabled, !.  The characters $ and ` retain
   their special meaning within double quotes.
于 2013-07-04T20:48:07.247 に答える