20 Bash Tricks in 5 Minutes - Spencer Krum
Índice:
- Declaração da função Bash
- Escopo das variáveis
- Retornar valores
- Passando argumentos para funções Bash
- Conclusão
Uma função Bash é essencialmente um conjunto de comandos que podem ser chamados várias vezes. O objetivo de uma função é ajudá-lo a tornar seus scripts bash mais legíveis e evitar escrever o mesmo código repetidamente.
Comparadas à maioria das linguagens de programação, as funções do Bash são um pouco limitadas. Neste tutorial, abordaremos o básico das funções do Bash e mostraremos como usá-las em seus scripts de shell.
Declaração da função Bash
A sintaxe para declarar uma função bash é muito simples. Eles podem ser declarados em dois formatos diferentes:
-
O primeiro formato começa com o nome da função, seguido por parênteses. Este é o formato preferido e mais usado.
function_name () { commands }Versão de linha única:
function_name () { commands; }O segundo formato começa com a palavra reservada da
functionseguida pelo nome da função.function function_name { commands }Versão de linha única:
function function_name { commands; }
Alguns pontos a serem observados:
- A lista de comandos entre chaves
{}é o corpo da função. Os colchetes que envolvem o corpo da função devem ser separados do corpo por espaços ou novas linhas. 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;vírgula;deve seguir o último comando da função. Você deve sempre tentar manter os nomes de suas funções descritivos.
Para entender isso melhor, dê uma olhada no seguinte exemplo:
~ / hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Vamos analisar o código linha por linha:
- Na linha
3, estamos definindo a função, dando-lhe um nome e abrindo a chave{que marca o início do corpo da função. A linha4é o corpo da função. O corpo da função pode conter vários comandos e declarações de variáveis. A linha5, o colchete de fechamento}, define o final da funçãohello_world. Na linha7, estamos executando a função. Você pode executar a função quantas vezes precisar.
Se você executar o script, ele imprimirá
hello, world
.
Escopo das variáveis
Variáveis globais são variáveis que podem ser acessadas de qualquer lugar no script, independentemente do escopo. No Bash, todas as variáveis por padrão são definidas como globais, mesmo se declaradas dentro da função.
Variáveis locais podem ser declaradas no 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 diferentes funções.
Para ilustrar melhor como o escopo das variáveis funciona no Bash, vamos considerar um exemplo:
~ / variables_scope.sh
#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"
O script começa definindo duas variáveis globais
var1
e
var2
. Em seguida, uma função que define uma variável local
var1
e modifica a variável global
var2
.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
A partir da saída acima, podemos concluir que:
- Se você definir 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. As variáveis globais podem ser alteradas de dentro da função.
Retornar valores
Diferentemente das funções nas linguagens de programação "reais", as funções do Bash não permitem que você retorne um valor quando chamado. Quando uma função bash é concluída, seu valor de retorno é o status da última instrução executada na função,
0
para êxito e número decimal diferente de zero no intervalo de 1 a 255 para falha.
O status de retorno pode ser especificado usando a palavra-chave
return
e é atribuído à variável
$?
. A declaração de
return
finaliza a função. Você pode pensar nisso como o status de saída da função.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
Para realmente retornar 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/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Outra opção melhor para retornar um valor de uma função é enviar o valor para
stdout
usando echo ou
printf
como mostrado abaixo:
#!/bin/bash my_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 imprimirá a mensagem em stdout, estamos atribuindo a saída da função à variável
func_result
usando a substituição do comando
$()
. A variável pode ser usada posteriormente conforme necessário.
Passando argumentos para funções Bash
Para passar qualquer número de argumentos para a função bash, basta colocá-los logo após o nome da função, separados por um espaço. É uma boa prática aspas duplas nos argumentos para evitar a análise incorreta de um argumento com espaços nele.
- Os parâmetros passados são
$1,$2,$3…$n, correspondentes à posição do parâmetro após o nome da função. A variável$0é reservada para o nome da função. A variável$#mantém o número de parâmetros / argumentos posicionais transmitidos para o As variáveis$*e$@contêm todos os parâmetros / argumentos posicionais passados para a função.- Quando entre aspas duplas,
"$*"expande para uma única sequência separada por espaço (o primeiro caractere do IFS) -"$1 $2 $n".Quando entre aspas duplas,"$@"expande para separar sequências -"$1" "$2" "$n". Quando não está entre aspas,$*e$@são os mesmos.
- Quando entre aspas duplas,
Aqui está um exemplo:
~ / crossing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Conclusão
Uma função Bash é um bloco de código reutilizável projetado para executar uma operação específica. Uma vez definida, a função pode ser chamada várias vezes em um script.
Você também pode ler sobre como usar uma função Bash para criar um comando de atalho memorável para um comando mais longo.
terminal bashNo entanto, o Obama-berry pode estar sujeito a limitações semelhantes àquelas colocadas em dispositivos usados pelos funcionários anteriores da Casa Branca. Os usuários de PDA na Administração Bush tiveram suas funções de GPS desativadas, nenhum dado sigiloso pôde ser transmitido pelos dispositivos e eles não puderam ser usados no exterior, onde as redes de celulares poderiam ser menos seguras. Considerando que Obama pretende usar seu dispositivo para uso pessoal e mensagens de rotina, essas
Equipe Obama 1, Burocratas 0
Gmail Obtém Autocomplete Search Funções
Google trazer Search Suggest recurso para o Gmail permitindo o acesso rápido a contatos, anexos e conversas de mensagens instantâneas armazenadas.
Atualizações do Google Algumas funções do Google Apps
O Google atualizou alguns recursos do Gmail e do Documentos para alguns clientes do Google Apps.







