Em bash
, aspas simples são para sequências literais fixas. Aspas duplas são usadas onde você deseja que a interpolação de variáveis, a substituição de comandos, etc. ocorra.
Seu comando sed
precisa usar um literal $
(para que o comando i
se aplique à última linha do arquivo) AND $NAME
para a variável interpolar . Para fazer isso, você precisa "escapar" do literal $
com uma barra invertida para que o shell não interprete o $i
em seu script sed como "substituir pelo conteúdo da variável $ i" em vez de "literal $
seguido por literal i
":
BTW, é melhor testar coisas como essa sem usar a opção -i
, para que sed
não atrapalhe seu arquivo de entrada enquanto você está descobrindo a sintaxe correta. Adicione o -i
mais tarde quando tiver certeza de que está fazendo exatamente o que deseja.
$ NAME=name
$ sed "\$i $NAME" file.list
one
two
three
four
name
five