Problema de sintaxe de construção condicional - colchetes quadrados ou redondos

1

Estou estudando scripts Bash básicos em um sistema Debian 8.6. Eu li um exemplo que encontrei em um livro que mostra como construir uma construção condicional. Eu deixo você abaixo:

#!/bin/bash
#Filname: CondConst.sh

if [$UID -ne 0]; then
        echo "Non root User."
else
        echo "Root User."
fi

Quando executo o script que contém este código, recebo a seguinte mensagem de erro e resultado:

[1000: command not found
Root User.

Eu tentei modificar o código de várias maneiras (usando aspas e espaços), mas não consegui entender como usar a sintaxe dos colchetes para a comparação. Eu resolvi o problema usando uma sintaxe diferente, que mostro abaixo:

#!/bin/bash
#Filname: CondConst.sh

if (($UID!=0)); then
        echo "Non root User."
else
        echo "Root User."
fi

Alguém pode me explicar, se possível, o motivo pelo qual eu não posso usar colchetes?

Obrigado, antecipadamente.

    
por istackoverflow 07.12.2016 / 11:16

1 resposta

1

Seu erro é porque você não está digitando um espaço depois de [ , então ele é visto como um comando [1000 , então apenas digite espaço:

#!/bin/bash
#Filname: CondConst.sh

if [ $UID -ne 0 ]; then
        echo "Non root User."
else
        echo "Root User."
fi
    
por 07.12.2016 / 11:19