Afirmação Bash 'if else': tutorial e exemplos

Usando a instrução if… else no Bash para execução de código condicional.

Bash (Bourne Again Shell) é um prompt de comando shell e linguagem de script em sistemas operacionais GNU / Linux. É o shell padrão para a maioria das distribuições Linux.

As declarações condicionais são vitais em qualquer linguagem de programação, tanto compiladas quanto com scripts. Eles permitem que o usuário execute um trecho de código com base em uma condição predefinida, que é uma das bases da lógica de programação. Neste artigo, aprenderemos como usar o se ... mais declaração condicional no Bash.

Introdução

O se ... mais instrução no Bash permite que o usuário manipule o fluxo de código com base nas condições. O usuário pode especificar blocos de código separados a serem executados, apenas um dos quais será finalmente executado durante o tempo de execução, com base na condição correspondente que é satisfeita.

Observe que, mais de duas condições podem ser especificadas, para as quais elif declaração pode ser usada. O usuário pode fornecer qualquer número de condições usando elife, finalmente, uma condição padrão usando senão quadra. Vamos ver mais sobre isso na sintaxe e nos exemplos abaixo.

Sintaxe Geral

A sintaxe geral para se ... mais declaração em Bash é:

se então  senão  fi

Aqui, se o satisfaz, ou seja, se retornar 0 (sucesso), então o bloco de código 1 é executado. Se a condição não retornar 0, ou seja, retornar um status de falha, então o bloco de código 2 é executado. O se ... mais bloco termina com um fi declaração.

Para vários blocos correspondentes a várias condições,elif é usado:

se então  elif então  elif então  ... ... senão  fi

Aqui, as condições são verificadas em ordem e o bloco de código da primeira condição que retorna o status 0 (sucesso) é executado. Por exemplo. E se retorna status diferente de zero (falha), então está checado. Se retorna o status 0, É executado. Depois disso, outras condições não são verificadas e a execução do código continua para o código após o fi declaração.

Se nenhuma das condições retornar status 0, no bloco else é executado. Observe que o bloco else é opcional. Se nenhuma condição for satisfeita, bem como nenhum senão bloco for especificado, nenhum bloco de código condicional será executado e a execução do código continuará para o código após o fi declaração, conforme mostrado no fluxograma abaixo.

Observe que o então declaração deve ser usada somente após E se e elif declarações e não exigidas após o senão declaração.

Exemplos

Para executar um bloco de código se uma variável tem um valor particular:

x = 0 if [$ x -eq 0] then echo "O valor de X é 0" else echo "O valor de X não é 0" fi

Para verificar vários valores:

x = 2 if [$ x -eq 0] then echo "Valor de X é 0" elif [$ x -eq 1] then echo "Valor de X é 1" elif [$ x -eq 2] then echo "Valor de X é 2 "else echo" O valor de X não é 0 "fi

As condições podem ser quaisquer comandos do Linux. O bloco de código correspondente será executado se o comando for executado com êxito.

if npm -v then echo "NPM present in system" else sudo apt install npm fi

No exemplo acima, uma vez que npm não foi instalado no sistema, o comando npm -v retornou um status diferente de zero. Portanto, a execução do código foi para o senão bloco, onde instalamos o npm usando apto gerenciador de pacotes. Como podemos ver, ele me solicitou a inserir a senha e iniciou a instalação do npm.

Nós também podemos aninhar outro se ... mais bloco dentro de um E se, senão ou elif quadra:

x = 0 y = 1 if [$ x -eq 0] then echo "X is 0" if [$ y -eq 1] then echo "Y is 1" else echo "Y is not 1" fi else echo "X is não 0 "fi

Isso é útil quando um conjunto separado de condições deve ser verificado, uma vez que uma condição inicial seja satisfeita.

Por exemplo, o código a seguir tenta instalar um software de servidor da web:

se nginx -v então echo "NGINX já está instalado." senão, se sudo apt install nginx, echo "Instalação NGINX bem-sucedida." elif sudo apt install apache2 e echo "APACHE2 installation successful." else echo "Incapaz de instalar qualquer software da web." fi

O código verifica primeiro se o Nginx já está instalado no sistema. Se for, ele apenas exibe uma mensagem e sai. Se não estiver, ele tenta instalar o Nginx.

Se por algum motivo, o Nginx não pôde ser instalado no sistema a partir do pacote, ele tenta instalar o Apache2. Se até mesmo o Apache2 apresentar erro durante a instalação, ele sairá exibindo uma mensagem de que nenhum software pôde ser instalado.

De forma semelhante, um bloco aninhado pode ser usado dentro de um elif bloquear também.

Executando se ... mais: Scripts e linha de comando

Semelhante a qualquer código Bash, o se ... mais instrução pode ser usada no shell Bash diretamente ou a partir de um arquivo de script de shell executável. Assim que o intérprete Bash encontrar um E se, senão ou elif declaração, ele continua o shell para permitir que o usuário insira o bloco de código.

O usuário também pode salvar este código em um arquivo de script e executar o arquivo de script.

O #! / bin / bash no início especifica o interpretador a ser usado quando o arquivo é executado. Embora o Bash seja o shell mais comumente usado hoje em dia, alguns usuários preferem shells como o zsh, que deve ser especificado no lugar do bash no início deste arquivo.

Para conceder permissões de execução para este arquivo, execute:

chmod + x test.sh

Finalmente, para executar o arquivo, execute:

./test.sh

Conclusão

Semelhante a qualquer linguagem de programação, se ... mais declaração é um recurso fundamental do Bash. Aprender seu uso ajuda muito na escrita de scripts básicos e avançados.