Resposta curta : está dizendo ao shell para verificar a existência de $filename
para saber se deve escolher a declaração then
ou else
.
Antes que a declaração if possa ser avaliada, a condição precisa ser testada - ela é verdadeira ou é falsa? Aqui, [[ ]]
denota uma variável booleana cujo valor depende da expressão dentro. Tradicionalmente, [ ]
era a sintaxe bash para emitir o comando test
, retornando o valor da expressão, independentemente do tipo e em qualquer contexto. Versões mais recentes do bash adotaram [[ ]]
como uma palavra-chave exclusivamente para instruções if. Eu imagino que isso impede erros de tipo, ou algo assim.