Estou tentando aprender a usar o trap
comando signal no Bash. O trap
comando é bem fácil de usar, mas a questão que fica na minha cabeça é a importância de usar aspas simples e duplas.
Qual é a diferença entre as aspas simples e duplas usadas com o
trap
comando?Você pode dar alguns exemplos simples que mostram claramente a diferença entre os dois usos?
O
trap
comando apenas leva a string para ser processada como comandos do shell, comoeval
. Essa string será processada para expansões, então a diferença entre aspas simples e duplas é quando as primeiras expansões acontecem. Em aspas duplas, eles acontecem quando a armadilha é definida, em aspas simples quando é acionada.Por exemplo, isso será impresso
foo=1
quando oread
for interrompido, mas com aspas simples imprimiráfoo=2
:É claro que, mesmo com aspas duplas, o comando resultante também é expandido quando o trap é acionado, portanto, ter
foo=$0
na linha antes do trap acima resultaria no script imprimindo o nome do script na interrupção.