Olá amigo estudante.
A diferença entre usar ou não colchetes ([ ... ]
) em condições dentro de scripts shell está relacionada ao tipo de comando que você está testando.
Vamos explicar claramente:
if ping -c 1 8.8.8.8 > /dev/null; then
...
fi
Aqui não é necessário colchetes porque:
- O
if
está testando o código de saída do comandoping
. - O comando
ping
retorna 0 se tiver sucesso, ou diferente de 0 se falhar. - O
if
em shell simplesmente verifica se o comando foi bem-sucedido (ou seja, retorno0
).
Portanto, funciona assim:
if COMANDO; then
# se COMANDO retornar 0 (sucesso), entra aqui
fi
Usa-se quando você quer fazer testes de comparação, por exemplo:
if [ "$nome" = "João" ]; then
echo "Olá, João"
fi
Ou:
if [ -f /etc/passwd ]; then
echo "Arquivo existe"
fi
Nesse caso, os colchetes são um comando chamado test
. Exemplo:
if test "$nome" = "João"; then ...
é o mesmo que:
if [ "$nome" = "João" ]; then ...
Então, quando usar colchetes?
Situação | Sintaxe recomendada |
---|---|
Verificar sucesso de um comando | if comando; then ... |
Comparar strings, números, arquivos etc. | if [ condição ]; then ... ou if [[ condição ]]; then ... |
- Use
[[ ... ]]
(colchetes duplos) em Bash para expressões mais robustas (ex: regex). - O
[[ ... ]]
é mais moderno e seguro para strings (ex: não precisa escapar>
ou usar aspas sempre).
Exemplos:
# Testando comando
if ping -c 1 8.8.8.8 > /dev/null; then
echo "Conectado"
fi
# Testando variável
if [ "$usuario" = "admin" ]; then
echo "Bem-vindo, admin"
fi
Qualquer duvida comente ai.
Bons estudos.
Até...
:)