O Que É Quoting no Shell? Controlando a Expansão
Quoting no shell diz a ele para tratar o texto literalmente, controlando se espaços dividem argumentos e se variáveis e wildcards são expandidos.
Quoting é uma das partes mais propensas a erro do scripting em shell, e uma das mais importantes. Se você envolve um valor em aspas simples, aspas duplas, ou nenhuma, decide se o shell o divide em espaços, expande suas variáveis ou faz glob de seus wildcards. A maioria dos bugs de "funciona até um path ter um espaço" no CI se resume a aspas ausentes.
Por que quoting existe
O shell normalmente divide a entrada em espaços em branco e expande variáveis e wildcards. Quoting suspende parte ou todo isso, permitindo passar o texto exatamente como escrito, espaços e caracteres especiais incluídos.
Aspas simples versus duplas
- Aspas simples são totalmente literais: nada dentro é expandido.
- Aspas duplas permitem substituição de variáveis e comandos mas previnem word splitting e globbing.
- Sem aspas significa divisão, expansão e globbing completos.
O bug clássico
Sem aspas, rm $FILE quebra se $FILE contém um espaço, porque o shell o divide em dois argumentos. Escrever rm "$FILE" o mantém como um só, e é por isso que variáveis quase sempre devem ficar entre aspas duplas.
Quoting e expansão juntos
Aspas duplas são o ponto ideal na maioria dos scripts: você ainda obtém valores de variáveis via $VAR, mas espaços nesses valores permanecem intactos e wildcards não são acidentalmente expandidos.
Quoting no CI
Paths e entradas de CI muitas vezes contêm espaços ou caracteres especiais que você não antecipou. Colocar toda expansão de variável entre aspas duplas, como "${INPUT}", é o hábito mais eficaz para evitar falhas misteriosas de word splitting em pipelines.
Scripts robustos em runners gerenciados
Nos runners da Latchkey, as mesmas regras de quoting se aplicam como em qualquer shell Linux. Combinar set -u com aspas duplas consistentes captura tanto variáveis não definidas quanto mal quotadas antes que corrompam um build.
Principais conclusões
- Quoting controla o word splitting e a expansão de variáveis e wildcards.
- Aspas simples são literais; aspas duplas expandem variáveis mas mantêm espaços intactos.
- Colocar toda variável entre aspas duplas, como
"$VAR", previne a maioria dos bugs em scripts de CI.