[
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" ]