Articles

Bash Functions

Posted by admin

a Bash function is essentially a set of commands that can be called numerous times. O objetivo de uma função é ajudá-lo a tornar seus scripts bash mais legíveis e evitar escrever o mesmo código repetidamente. Em comparação com a maioria das linguagens de programação, as funções Bash são um pouco limitadas.

neste tutorial, iremos cobrir os conceitos básicos das funções Bash e mostrar-lhe como as usar nos seus scripts shell.

definir funções Bash #

a sintaxe para declarar uma função bash é simples., As funções podem ser declaradas em dois formatos diferentes:

  1. o primeiro formato começa com o nome da função, seguido de parêntesis. Este é o formato preferido e mais usado.

    function_name () { commands}

    Única versão de linha:

    function_name () { commands; }
  2. O segundo formato é iniciado com a palavra reservada function, seguido do nome da função.,

    function function_name { commands}

    Única versão de linha:

    function function_name { commands; }

Alguns pontos a serem observados:

  • Os comandos entre as chaves ({}) são chamados de o corpo da função. Os suspensórios devem ser separados do corpo por espaços ou linhas novas.
  • definir uma função não a executa. Para invocar uma função bash, basta usar o nome da função. Os comandos entre os Chavetas são executados sempre que a função é chamada no script shell.,
  • A definição da função deve ser colocada antes de qualquer chamada para a função.
  • Ao usar funções “compactadas” de linha única, um ponto e vírgula deve seguir o último comando na função.
  • tente sempre manter os nomes das suas funções descritivos.

Para entender isso melhor, dê uma olhada no exemplo a seguir:

~/hello_world.sh
#!/bin/bashhello_world () { echo 'hello, world'}hello_world

Vamos analisar o código linha a linha:

  • Na linha 3, estamos definindo a função de dar a ele um nome., O curly brace { marca o início do corpo da função.
  • linha 4 é o corpo da função. O corpo da função pode conter vários comandos, declarações e declarações variáveis.
  • Line5, the closing curly bracket }, defines the end of the hello_world function.
  • na linha 7 estamos executando a função. Você pode executar a função quantas vezes precisar.,

Se executar o programa, ele irá imprimir hello, world.

variables Scope #

global variables are variables that can be accessed from anywhere in the script regardless of the scope. In Bash, all variables by default are defined as global, even if declared inside the function.

variáveis locais podem ser declaradas dentro do corpo da função com a palavra-chave local e podem ser usadas apenas dentro dessa função. Você pode ter variáveis locais com o mesmo nome em funções diferentes.,

Para melhor ilustrar como variáveis de escopo de obras em Bash, vamos considerar o seguinte exemplo:

~/variables_scope.sh

O script começa por definir duas variáveis globais var1 e var2. Em seguida, há uma função que define uma variável local var1 e modifica a variável global var2.,

Se você executar o script, você deve ver a seguinte saída:

Before executing function: var1: A, var2: BInside function: var1: C, var2: DAfter executing function: var1: A, var2: D

a Partir do resultado acima, podemos concluir que:

  • Quando uma variável local é definido dentro do corpo da função com o mesmo nome que uma variável global, ela terá precedência sobre a variável global.
  • variáveis globais podem ser alteradas a partir de dentro da função.

Return Values #

Unlike functions in “real” programming languages, Bash functions don’t allow you to return a value when called., Quando uma função bash completa, seu valor de retorno é o estado da última declaração executada na função, 0 para sucesso e número decimal não-zero no intervalo 1 – 255 para falha.

O Estado de retorno pode ser especificado usando a palavra-chave return, e é atribuído à variável $?. A declaração return termina a função. Pode pensar nisso como o estado de saída da função .

~ / retorn_values.,sh
#!/bin/bashmy_function () { echo "some result" return 55}my_functionecho $?

some result55

para realmente devolver um valor arbitrário de uma função, precisamos usar outros métodos. A opção mais simples é atribuir o resultado da função a uma variável global:

~/return_values.sh
#!/bin/bashmy_function () { func_result="some result"}my_functionecho $func_result
some result

Outro, melhor opção para retornar um valor de uma função é enviar o valor para stdout usando o comando ” echo ou printf como mostrado abaixo:

~/return_values.,sh
#!/bin/bashmy_function () { local func_result="some result" echo "$func_result"}func_result="$(my_function)"echo $func_result
some result

em Vez de simplesmente executar a função que irá imprimir a mensagem para stdout, estamos a atribuir a função a saída para o func_result variável usando o $() substituição de comando. A variável pode ser usada mais tarde conforme necessário.

passando argumentos para as funções Bash #

para passar qualquer número de argumentos para a função bash simplesmente colocá-los logo após o nome da função, separados por um espaço., É uma boa prática duplicar a citação dos argumentos para evitar a separação de um argumento com espaços nele.

Aqui está um exemplo:

~/passing_arguments.sh
#!/bin/bashgreeting () { echo "Hello $1"}greeting "Joe"
Hello Joe

Conclusão #

Um Bash função é um bloco de código reutilizável concebidos para realizar uma operação específica. Uma vez definida, a função pode ser chamada várias vezes dentro de um script.

pode também querer ler sobre como usar uma função Bash para criar um comando de atalho memorável para um comando mais longo.

Leave A Comment