Sintaxe incorreta. Por favor, leia a documentação sobre o comando [ ( help [ / help test )
Cada argumento deve ser um argumento próprio, ou seja, você deve usar espaços entre: [ "$num1" == "$num2" ] . A razão pela qual você não vê um erro na primeira verificação é que ele tenta encontrar um comando chamado (com num1 = 3 e num2 = 4) [3==4] , que não existe, portanto a expressão é avaliada como falsa. Na primeira verificação, você escreveu um < , que é um operador de shell para redirecionamento de entrada . Ele tenta abrir o arquivo 4] , que na maioria dos casos não existe.
No entanto, ao comparar números, você deve usar -eq e semelhante, == é para comparação de string: [ 3 == 3.0 ] é falso, [ 3 -eq 3.0 ] é verdadeiro.