[ é uma função integrada binária ou bash.
if aguarda a execução de algo que retornará 0 ou 1.
No seu caso, você tenta executar o programa: ["$WIDTH_LIMIT" com o argumento -ge e 2000] porque seu shell usa espaço para separar o argumento e ["$WIDTH_LIMIT" não é um comando binário ou bash apropriado.
Portanto, você deve sempre colocar espaço antes e depois de [ e ] , porque eles são comandos regulares. Você não pode digitar echo$UTY seu shell não o reconhecerá como um comando no PATH
Eu percebo que é fácil lembrar a sintaxe [ porque tem uma página man.
Tente man [ você verá que é apenas um arquivo executável ou um comando shell embutido (dependendo do seu sabor Unix / Linux) com argumento regular, ele precisa ter espaço depois dele.