man bash
dá isso sobre aspas simples
Incluir caracteres entre aspas simples preserva o valor literal de cada caractere dentro das aspas. Uma aspas simples pode não ocorrer entre aspas simples, mesmo quando precedida por uma barra invertida.
Tudo o que você digita na linha de comando, o bash o interpreta e, em seguida, envia o resultado ao programa para o qual ele deve ser enviado.Neste caso, se você usar sed 's/$old_run/$new_run/'
, o bash primeiro vê o sed
, o reconhece como um executável presente na $PATH
variável . O sed
executável requer uma entrada. Bash procura a entrada e encontra 's/$old_run/$new_run/'
. Aspas simples dizem ao bash para não interpretar o conteúdo nelas e passá-las como estão. Então, o bash os passa para o sed. Sed dá um erro porque $
pode ocorrer apenas no final da linha.
Em vez disso, se usarmos aspas duplas, isto é, o "s/$old_run/$new_run/"
bash vê isso e interpreta $old_run
como um nome de variável e faz uma substituição (essa fase é chamada de expansão variável). Isso é realmente o que exigimos.
Porém, você deve ter cuidado ao usar aspas duplas, pois elas são interpretadas primeiro pelo bash e depois fornecidas ao sed. Portanto, alguns símbolos como `devem ser escapados antes de serem usados.