[ não faz parte da instrução if , é um comando que avalia expressões. O [ 0 ] retorna true porque o formulário [ Expression ] sempre é avaliado como 0. Se você tentar if [ 1 -eq 2 ] , a instrução then não será executada.
Verifique a página de manual para obter mais informações.