logo

Funções Bash

Neste tópico, demonstramos os fundamentos das funções bash e como elas funcionam no script bash shell.

Funções em scripts bash são uma ótima opção para reutilizar código. Uma função Bash pode ser definida como um conjunto de comandos que podem ser chamados várias vezes no script bash. O objetivo da função no bash é ajudá-lo a tornar seus scripts mais legíveis e evitar escrever o mesmo código repetidamente. Ele também permite que os desenvolvedores quebrem um código complicado e demorado em pequenas partes que podem ser chamadas sempre que necessário. As funções podem ser chamadas a qualquer momento e repetidamente, o que nos permitirá reutilizar, otimizar e minimizar o código.

A seguir estão alguns pontos-chave sobre funções bash:

  • Uma função deve ser declarada no shell script antes de podermos usá-la.
  • Os argumentos podem ser passados ​​para as funções e acessados ​​dentro da função como , , etc.
  • Variáveis ​​locais podem ser atribuídas dentro da função, e o escopo de tais variáveis ​​será apenas aquela função específica.
  • Os comandos integrados do shell Bash podem ser substituídos usando funções.

Sintaxe

A sintaxe para declarar uma função bash pode ser definida em dois formatos:

1. O primeiro método começa com o nome da função, seguido de parênteses. É o método mais preferido e comumente usado:

 function_name () { commands } 

A versão de linha única pode ser mencionada abaixo:

 function_name () { commands; } 

2. O segundo método começa com a palavra reservada da função, seguida pelo nome da função:

exemplos de código de amostra javascript
 function function_name { commands } 

A versão de linha única pode ser mencionada abaixo:

 function function_name { commands; } 

Comparadas com a maioria das linguagens de programação, as funções do Bash são um tanto limitadas. Vamos entender o conceito com a ajuda de alguns exemplos:

Exemplo: Método 1

 #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

Saída

 Welcome to Javatpoint. 

Exemplo: Método 2

 #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

Saída

 Welcome to Javatpoint. 

Passando argumentos

Como a maioria das linguagens de programação, também podemos passar os argumentos e processar os dados em funções bash. Podemos inserir os dados na função de maneira semelhante à passagem de argumentos de linha de comando para um script bash.

primeiro portátil

Para passar qualquer número de argumentos para a função bash, somos obrigados a inseri-los logo após o nome da função. Devemos aplicar espaços entre o nome da função e os argumentos. Também será uma ótima opção usar aspas duplas ao redor dos argumentos para evitar erros de análise dos argumentos com espaços.

A seguir estão alguns pontos-chave sobre a passagem de argumentos para as funções bash:

  • Os argumentos fornecidos são acessados ​​como , , ... $n, correspondendo à posição dos argumentos após o nome da função.
  • A variável

    Neste tópico, demonstramos os fundamentos das funções bash e como elas funcionam no script bash shell.

    Funções em scripts bash são uma ótima opção para reutilizar código. Uma função Bash pode ser definida como um conjunto de comandos que podem ser chamados várias vezes no script bash. O objetivo da função no bash é ajudá-lo a tornar seus scripts mais legíveis e evitar escrever o mesmo código repetidamente. Ele também permite que os desenvolvedores quebrem um código complicado e demorado em pequenas partes que podem ser chamadas sempre que necessário. As funções podem ser chamadas a qualquer momento e repetidamente, o que nos permitirá reutilizar, otimizar e minimizar o código.

    A seguir estão alguns pontos-chave sobre funções bash:

    • Uma função deve ser declarada no shell script antes de podermos usá-la.
    • Os argumentos podem ser passados ​​para as funções e acessados ​​dentro da função como $1, $2, etc.
    • Variáveis ​​locais podem ser atribuídas dentro da função, e o escopo de tais variáveis ​​será apenas aquela função específica.
    • Os comandos integrados do shell Bash podem ser substituídos usando funções.

    Sintaxe

    A sintaxe para declarar uma função bash pode ser definida em dois formatos:

    1. O primeiro método começa com o nome da função, seguido de parênteses. É o método mais preferido e comumente usado:

     function_name () { commands } 

    A versão de linha única pode ser mencionada abaixo:

     function_name () { commands; } 

    2. O segundo método começa com a palavra reservada da função, seguida pelo nome da função:

     function function_name { commands } 

    A versão de linha única pode ser mencionada abaixo:

     function function_name { commands; } 

    Comparadas com a maioria das linguagens de programação, as funções do Bash são um tanto limitadas. Vamos entender o conceito com a ajuda de alguns exemplos:

    Exemplo: Método 1

     #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

    Saída

     Welcome to Javatpoint. 

    Exemplo: Método 2

     #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

    Saída

     Welcome to Javatpoint. 

    Passando argumentos

    Como a maioria das linguagens de programação, também podemos passar os argumentos e processar os dados em funções bash. Podemos inserir os dados na função de maneira semelhante à passagem de argumentos de linha de comando para um script bash.

    Para passar qualquer número de argumentos para a função bash, somos obrigados a inseri-los logo após o nome da função. Devemos aplicar espaços entre o nome da função e os argumentos. Também será uma ótima opção usar aspas duplas ao redor dos argumentos para evitar erros de análise dos argumentos com espaços.

    A seguir estão alguns pontos-chave sobre a passagem de argumentos para as funções bash:

    • Os argumentos fornecidos são acessados ​​como $1, $2, $3 ... $n, correspondendo à posição dos argumentos após o nome da função.
    • A variável $0 é mantida reservada para o nome da função.
    • A variável $# é usada para armazenar o número de argumentos/parâmetros posicionais dados à função.
    • As variáveis ​​$* e $@ são usadas para armazenar todos os argumentos/parâmetros dados à função.
      • Quando $* é usado entre aspas duplas (ou seja, '$*' ), ele se expande para uma única string separada por espaço. Por exemplo, '$1 $2 $n etc'.
      • Quando $@ é usado entre aspas duplas (ou seja, '$@' ), ele se expande para uma string separada. Por exemplo, '$1' '$2' '$n' etc.
      • Quando $* e $# não são usados ​​​​com aspas duplas, ambos são iguais.

    A seguir está o código que ilustra o procedimento sobre como passar argumentos para funções e acessar os argumentos dentro da função.

    Script Bash

     #!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

    Saída

    Funções Bash

    Neste script, adicionamos os valores 'We', 'welcome', 'you', 'on' e 'Javatpoint' depois de chamarmos os function_arguments. Esses valores são passados ​​para o argumentos_de_função como parâmetros e armazenados em uma variável local. Porém, diferentemente de outras linguagens, o interpretador armazena os valores passados ​​em variáveis ​​predefinidas, que são então nomeadas de acordo com a sequência de parâmetros passados.

    Por exemplo,

    'Nós' palavra é armazenada na variável 1 .
    'Bem-vindo' palavra é armazenada na variável 2 .
    'você' palavra é armazenada na variável 3 .
    'sobre' palavra é armazenada na variável 4 .
    'Javatpoint' palavra é armazenada na variável 5 .

    Escopo Variável

    Variáveis ​​globais são definidas como variáveis ​​que podem ser acessadas em qualquer lugar dentro do script, independentemente do escopo. Por padrão, todas as variáveis ​​são definidas como variáveis ​​globais, mesmo que sejam declaradas dentro da função. Também podemos criar variáveis ​​como variáveis ​​locais. Variáveis ​​locais podem ser declaradas dentro do corpo da função com o caractere ?local? palavra-chave quando são atribuídas pela primeira vez. Eles só são acessíveis dentro dessa função. Podemos criar variáveis ​​locais com o mesmo nome em funções diferentes. Para adicionar uma variável local, podemos usar a seguinte sintaxe:

     local var_name= 

    Para entender melhor como funciona o escopo das variáveis ​​no Bash Scripting, confira o exemplo a seguir:

    Script Bash

     #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

    Saída

    Funções Bash

    De acordo com a saída, se definirmos uma variável local dentro do corpo da função com o mesmo nome de uma variável global existente, ela terá precedência sobre a variável global. Variáveis ​​globais podem ser modificadas dentro da função.

    Valores de retorno

    A maioria das linguagens de programação possui o conceito de retornar um valor para as funções. Isso significa que a função deve enviar os dados de volta ao local de chamada original. Ao contrário das funções em linguagens de programação 'reais', a função Bash não fornece suporte para retornar um valor quando é chamada. No entanto, eles nos permitem definir um status de retorno semelhante ao modo como um programa ou comando sai com um status de saída. Quando uma função bash é concluída, seu valor de retorno é o status da última instrução executada na função. Ele retorna 0 para o status de sucesso e um número decimal diferente de zero no intervalo de 1 a 255 para falha.

    O status de retorno pode ser indicado usando a palavra-chave 'return' e é atribuído à variável $?. A instrução return encerra a função e funciona como o status de saída da função.

    Por exemplo, considere o seguinte código:

    Script Bash

     #!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

    Saída

    Funções Bash

    Outra opção melhor para retornar um valor de uma função é enviar o valor para saída padrão usando eco ou imprimir comandos, conforme mostrado abaixo:

    Script Bash

     #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

    Saída

     Welcome to Javatpoint. 

    Substituindo Comandos

    Temos a opção de substituir os comandos bash criando uma função com o mesmo nome do comando que iremos substituir. Por exemplo, se quisermos substituir o comando ‘echo’, teremos que criar uma função com o nome ‘echo’.

    Este conceito de substituir os comandos bash pode ser útil em alguns cenários, como quando queremos usar um comando com opções específicas. Além disso, quando não gostamos de fornecer opções ao comando inteiro várias vezes dentro do script. Nesses casos, podemos substituir o comando bash integrado por comando com opções. Agora, vamos entender o conceito de substituição de comandos no Bash Shell Scripting com a ajuda de alguns exemplos:

    Exemplo

    Neste exemplo, substituímos o comando 'echo' e adicionamos o carimbo de data / hora na forma de argumento ao comando 'echo'.

    Script Bash

     #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.' 

    Saída

    Funções Bash

    Conclusão

    Neste tópico, demonstramos sobre a função Bash. Uma função Bash é considerada um bloco de código reutilizável desenvolvido para realizar uma operação específica. Uma vez definido, pode ser chamado diversas vezes dentro de um script.


    é mantida reservada para o nome da função.
  • A variável $# é usada para armazenar o número de argumentos/parâmetros posicionais dados à função.
  • As variáveis ​​$* e $@ são usadas para armazenar todos os argumentos/parâmetros dados à função.
    • Quando $* é usado entre aspas duplas (ou seja, '$*' ), ele se expande para uma única string separada por espaço. Por exemplo, ' $n etc'.
    • Quando $@ é usado entre aspas duplas (ou seja, '$@' ), ele se expande para uma string separada. Por exemplo, '' '' '$n' etc.
    • Quando $* e $# não são usados ​​​​com aspas duplas, ambos são iguais.

A seguir está o código que ilustra o procedimento sobre como passar argumentos para funções e acessar os argumentos dentro da função.

Script Bash

css alterando o tamanho da imagem
 #!/bin/bash #Script to pass and access arguments function_arguments() { echo  echo  echo  echo  echo  } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

Saída

Funções Bash

Neste script, adicionamos os valores 'We', 'welcome', 'you', 'on' e 'Javatpoint' depois de chamarmos os function_arguments. Esses valores são passados ​​para o argumentos_de_função como parâmetros e armazenados em uma variável local. Porém, diferentemente de outras linguagens, o interpretador armazena os valores passados ​​em variáveis ​​predefinidas, que são então nomeadas de acordo com a sequência de parâmetros passados.

Por exemplo,

'Nós' palavra é armazenada na variável 1 .
'Bem-vindo' palavra é armazenada na variável 2 .
'você' palavra é armazenada na variável 3 .
'sobre' palavra é armazenada na variável 4 .
'Javatpoint' palavra é armazenada na variável 5 .

Escopo Variável

Variáveis ​​globais são definidas como variáveis ​​que podem ser acessadas em qualquer lugar dentro do script, independentemente do escopo. Por padrão, todas as variáveis ​​são definidas como variáveis ​​globais, mesmo que sejam declaradas dentro da função. Também podemos criar variáveis ​​como variáveis ​​locais. Variáveis ​​locais podem ser declaradas dentro do corpo da função com o caractere ?local? palavra-chave quando são atribuídas pela primeira vez. Eles só são acessíveis dentro dessa função. Podemos criar variáveis ​​locais com o mesmo nome em funções diferentes. Para adicionar uma variável local, podemos usar a seguinte sintaxe:

 local var_name= 

Para entender melhor como funciona o escopo das variáveis ​​no Bash Scripting, confira o exemplo a seguir:

linguagem de computador bacana

Script Bash

 #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

Saída

Funções Bash

De acordo com a saída, se definirmos uma variável local dentro do corpo da função com o mesmo nome de uma variável global existente, ela terá precedência sobre a variável global. Variáveis ​​globais podem ser modificadas dentro da função.

Valores de retorno

A maioria das linguagens de programação possui o conceito de retornar um valor para as funções. Isso significa que a função deve enviar os dados de volta ao local de chamada original. Ao contrário das funções em linguagens de programação 'reais', a função Bash não fornece suporte para retornar um valor quando é chamada. No entanto, eles nos permitem definir um status de retorno semelhante ao modo como um programa ou comando sai com um status de saída. Quando uma função bash é concluída, seu valor de retorno é o status da última instrução executada na função. Ele retorna 0 para o status de sucesso e um número decimal diferente de zero no intervalo de 1 a 255 para falha.

O status de retorno pode ser indicado usando a palavra-chave 'return' e é atribuído à variável $?. A instrução return encerra a função e funciona como o status de saída da função.

Por exemplo, considere o seguinte código:

Script Bash

 #!/bin/bash #Setting up a return status for a function print_it () { echo Hello  return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

Saída

Funções Bash

Outra opção melhor para retornar um valor de uma função é enviar o valor para saída padrão usando eco ou imprimir comandos, conforme mostrado abaixo:

nome da cidade dos EUA

Script Bash

 #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

Saída

 Welcome to Javatpoint. 

Substituindo Comandos

Temos a opção de substituir os comandos bash criando uma função com o mesmo nome do comando que iremos substituir. Por exemplo, se quisermos substituir o comando ‘echo’, teremos que criar uma função com o nome ‘echo’.

Este conceito de substituir os comandos bash pode ser útil em alguns cenários, como quando queremos usar um comando com opções específicas. Além disso, quando não gostamos de fornecer opções ao comando inteiro várias vezes dentro do script. Nesses casos, podemos substituir o comando bash integrado por comando com opções. Agora, vamos entender o conceito de substituição de comandos no Bash Shell Scripting com a ajuda de alguns exemplos:

Exemplo

Neste exemplo, substituímos o comando 'echo' e adicionamos o carimbo de data / hora na forma de argumento ao comando 'echo'.

Script Bash

 #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo  } echo 'Welcome to Javatpoint.' 

Saída

Funções Bash

Conclusão

Neste tópico, demonstramos sobre a função Bash. Uma função Bash é considerada um bloco de código reutilizável desenvolvido para realizar uma operação específica. Uma vez definido, pode ser chamado diversas vezes dentro de um script.