Tente usar aspas duplas em vez de aspas simples:
sed "s/whatever1/$2 ... whatever2/" shared.txt > shared2.txt
Não consigo usar uma variável de shell em sed
no formulário $NUMBER
. Eu tenho essa linha no meu script de shell:
cat shared.txt sed 's/whatever1/$2 ... whatever2/' > shared2.txt
O resultado em shared2.txt
é semelhante a:
...$2....
O que eu fiz de errado?
Tente usar aspas duplas em vez de aspas simples:
sed "s/whatever1/$2 ... whatever2/" shared.txt > shared2.txt
Ao usar aspas duplas, há certas circunstâncias em que isso não dará o que você deseja. Por exemplo,
t="bcd"
echo '123$tbcd' | sed "s/$t$t//"
(sim, isso é um pouco inventado!). Você pode evitar isso escapando de determinados caracteres:
echo '123$tbcd' | sed "s/\$t$t//"
mas é fácil perder isso. A maneira mais segura, na minha opinião, é cercar as variáveis com aspas duplas (para que os espaços não travem o comando sed) e cercar o resto da string com aspas simples (para evitar a necessidade de escapar certos caracteres): / p>
echo '123$tbcd' | sed 's/$t'"$t"'//'.