[ precisa de um espaço depois disso porque [ é realmente um comando ( /usr/bin/[ no Linux, embora o bash tenha uma versão interna que ele usa). Sem o espaço, o bash converte $ x para o valor e, em seguida, tenta executar o comando [0 , como se você tivesse digitado lssomedir ou echohi .
Além disso, se você está testando strings, você deve colocar aspas em torno de $ x:
if [ "$x" == "string" ]
Caso contrário, se $ x estiver vazio ou não definido, você receberá um erro porque, sem as aspas, após "expandir" $ x, será exibido
if [ == "string" ]