O Que São Variáveis Bash e Como Você Pode Usá-las?

Uma fotografia de uma pessoa programando usando um laptop.

Bash permite que você mapeie strings inteiras de texto para variáveis únicas, simplificando seu uso e a escrita de scripts. Como elas funcionam e como você pode usá-las? Vamos descobrir.

Índice

  • O que é uma Variável Bash?
  • Variáveis em Tempo Real
  • Variáveis em Scripts
  • Variáveis Bash Permanentes e Aliases
  • Criando Arrays
  • Executando Variáveis de Subshell
  • Manipulação de Substrings
  • Perguntas Frequentes

O que é uma Variável Bash?

Variáveis são nomes fáceis de lembrar que podem conter diferentes valores alfanuméricos. Elas são úteis, pois permitem que a mesma função seja aplicada a diferentes valores, sem a necessidade de reescrever um script/trecho de código. Elas também facilitam a escrita do script/trecho de código, já que, em vez de lidar com valores individuais, você pode usar o mesmo nome para todos eles.

Variáveis em Tempo Real

Bash permite o uso de variáveis. Você pode criar variáveis rapidamente e reutilizá-las durante sua sessão atual do Bash. Elas podem ajudar seu uso do Bash de várias maneiras diferentes e desaparecerão após o término da sessão atual.

Por exemplo, digamos que você está visitando vários sites. Você pode estar fazendo pesquisa ou coletando dados e criar a seguinte variável:

sitea=https://www.maketecheasier.com

Um terminal mostrando uma atribuição básica de variável.

Depois disso, se você quisesse visitar nosso site com o Firefox, poderia simplesmente digitar:

firefox $sitea

Um terminal mostrando uma variável como argumento para um programa.

Muito mais fácil – e mais legível. A variável $sitea permaneceria mapeada para o site até que você mudasse seu conteúdo manualmente ou a sessão do Bash terminasse. E, claro, você pode criar mais variáveis, como siteb, sitec e sited.

Ao configurar novas variáveis, você pode usar qualquer nome que desejar e armazenar qualquer string alfanumérica dentro delas. Lembre-se, no entanto, de que elas são sensíveis a maiúsculas por padrão. Assim, $sitea não seria o mesmo que $SiteA. Além disso, observe que você deve usar aspas ao armazenar strings com caracteres especiais dentro delas (incluindo espaços).

Dica: para aqueles que são novos no Bash, comece com esses comandos básicos do Bash.

Variáveis em Scripts

Variáveis em Bash são mais úteis ao escrever scripts, pois permitem que você escreva um único script, que pode então iterar através de diferentes strings ou agir sobre pedaços de dados personalizados. Digamos que você está escrevendo um script que todos poderiam usar em seu computador, mas que a cada vez exibiria uma saudação personalizada. Sem variáveis, você teria que escrever uma versão diferente do script para cada usuário. Com variáveis, você mantém o script o mesmo e apenas muda o nome do usuário.

Um script desse tipo poderia ser algo como o seguinte:

#!/bin/bash  

username=Ramces  
echo$username

Um terminal mostrando um script básico de atribuição de variável.

O exemplo acima pode parecer redundante; no entanto, à medida que a complexidade do código aumenta, as variáveis se tornam indispensáveis. Um script pode ter centenas ou milhares de linhas e conter o nome do usuário em diferentes lugares. Para entender melhor, considere o seguinte script um pouco diferente:

#!/bin/bash  

username=Linus  
echo Olá $username. Este é um script simples que escrevi que repetirá seu nome - ou seja, $username - frequentemente como um exemplo real de como usar variáveis Bash. Espero que isso facilite a compreensão de como usar variáveis para melhorar seu fluxo de trabalho no Bash, $username. Neste caso, a variável username está mapeada para seu nome. Sempre que o Bash se deparar com isso, ele a substituirá por $username.

Um terminal mostrando um script básico com múltiplas substituições de variáveis.

O script acima usará o nome definido como a variável username para completar o texto. Se usar o nome real do usuário, você teria que digitá-lo quatro vezes, depois fazer o mesmo para o próximo usuário, e mais quatro vezes para o próximo. Novamente e novamente. Ao atribuí-lo a uma variável, você só precisa mudá-lo uma vez para cada usuário, e cada menção do nome do usuário no texto será atualizada.

Bom saber: além de variáveis, você também pode usar o loop for no Bash.

Variáveis Bash Permanentes e Aliases

Vimos como você pode definir variáveis temporariamente e como, para algo mais permanente, você pode incluí-las em seus próprios scripts. Você também pode definir variáveis permanentemente no Bash editando o arquivo “~/.bashrc”.

  1. Abra o arquivo “~/.bashrc” em seu editor de texto favorito.
nano ~/.bashrc
  1. Sugerimos que você comece com um teste, adicionando apenas uma única variável, para que você saiba onde procurar se o processo não funcionar. Vá até o final do arquivo e, em uma nova linha, adicione sua variável.
myname="Ramces Red"

Um terminal mostrando uma nova variável permanente dentro do arquivo bashrc.

  1. Salve seu arquivo e saia do editor. As alterações não serão aplicadas imediatamente. Digite o seguinte em seu terminal para que tenha efeito:
source ~/.bashrc
  1. Utilize a nova variável definida em sua sessão Bash:
echo$myname

Você pode configurar quantas variáveis desejar e simplificar imensamente suas aventuras diárias no Bash.

Para um impulso extra na produtividade, também vale a pena configurar um tipo diferente de variável: aliases. Ao contrário das variáveis típicas, que são mapeadas para dados que você pode usar em comandos, aliases são usados em vez de comandos reais.

Assim como você pode usar uma variável fácil de lembrar para armazenar longas strings de texto, pode usar aliases como alternativas fáceis para comandos complexos. Você pode descobrir mais sobre eles aqui, onde transformamos um comando de compressão 7zip inteiro em um alias de dois caracteres.

Por fim, mesmo que você tenha definido permanentemente uma variável no .bashrc, pode reatribuir um valor diferente a ela temporariamente, como vimos antes. A variável apresentará o novo conteúdo até que a sessão atual do Bash termine (após fazer logout ou reiniciar) ou você re-source o arquivo .bashrc.

Criando Arrays

Embora a maioria dos usuários do Bash pense em variáveis como um simples link entre um pedaço de dado e um rótulo, também é possível usá-las como um marcador para arrays. Estes são um tipo de estrutura de dados que pode armazenar múltiplos valores em um formato de índice numerado. Para criar um array, siga os passos abaixo:

  1. Crie um script shell vazio:
nano array.sh
  1. Use o subcomando declare para inicializar o array Bash no processo shell atual.
declare-a myarray

Um terminal mostrando a etapa de declaração para um array.

  1. Preencha seu novo array usando o operador de atribuição embutido do Bash. Por exemplo, a seguinte linha de código cria um array com cinco elementos dentro:
myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)

Um terminal mostrando um array básico com 5 elementos.

  1. Teste se seu novo array funciona usando o comando echo para puxar dados dele:
echo${myarray[1]}

Um terminal mostrando o script do array buscando um único elemento do array.

Você também pode transmitir o conteúdo de um array usando o operador “*”:

echo${myarray[*]}

Um terminal mostrando o script do array transmitindo todo o array.

Executando Variáveis de Subshell

Uma das maiores características do Bash é sua capacidade de criar subshells, onde programas podem ser executados como se fossem funções básicas. Por exemplo, escrever ls -a em um script shell e executá-lo ainda imprimirá o conteúdo do diretório de trabalho atual.

Um terminal mostrando um subshell de comando simples.

Embora isso possa parecer limitante, o Bash estende isso permitindo que você armazene a saída desses programas dentro de variáveis. Isso permite que você as use como entrada para outros programas dentro do seu script.

  1. Para usar variáveis de subshell, primeiro crie um script shell vazio:
nano subshell.sh
  1. Escreva o seguinte código básico dentro do seu novo script shell:
#!/bin/bash  

mysubshell=$(x)  
echo"A saída da variável é $mysubshell"
  1. Substitua o “x” pelo comando que você deseja executar e armazenar a saída. Por exemplo, o seguinte obterá o conteúdo do arquivo world.txt e substituirá a palavra “world” por “maketecheasier.”
mysubshell=$(sed s/world/maketecheasier/g world.txt)

Um terminal mostrando uma execução simples de subshell.

  1. Teste sua nova variável de subshell executando seu novo script:
chmod u+x ./subshell.sh  
bash ./subshell.sh

Um terminal mostrando a saída do script de subshell.

FYI: além de variáveis, estes são os caracteres especiais que você deve conhecer no Bash.

Manipulação de Substrings

Além de armazenar e recuperar dados, você também pode modificar o conteúdo das variáveis. O Bash possui um conjunto de operadores que você pode anexar ao final de cada variável, o que permitirá que você ajuste seus scripts sem chamar programas adicionais.

  1. Crie um script shell vazio:
nano substring.sh
  1. Escreva o seguinte código básico dentro do seu script vazio:
#!/bin/bash  

mysubstring=hello.txt.old  
echo"Meu nome de arquivo é: ${mysubstring}"
  1. A manipulação básica de substrings vem em três formas. Primeiro, o caractere “#” aceita um padrão regex que o shell removerá no início da variável:
#!/bin/bash  

mysubstring=hello.txt.old  
echo"Meu nome de arquivo é: ${mysubstring#*.}"

Um terminal mostrando a manipulação básica de prefixo de substring.

  1. Em segundo lugar, o caractere “%” também aceita um padrão regex que o shell removerá no final da variável:
#!/bin/bash  

mysubstring=hello.txt.old  
echo"Meu nome de arquivo é: ${mysubstring%.*}"

Um terminal mostrando a manipulação básica de sufixo de substring.

  • O Bash também fornece uma maneira de modificar seletivamente o conteúdo de uma variável. Semelhante ao programa sed, você pode usar o caractere “/” para encontrar e substituir qualquer string dentro de uma variável:
#!/bin/bash  

mysubstring=hello.txt  
echo"Meu nome de arquivo é: ${mysubstring/hello/maketecheasier}"

Um terminal mostrando uma função básica de edição de fluxo de substring.

Bom saber: expressões regulares são uma ferramenta importante no kit de ferramentas de todo usuário Linux. Aprenda a usá-las efetivamente através do nosso fácil guia de referência.

Perguntas Frequentes

É possível executar um script shell dentro de uma variável?

Sim, escrevendo o caminho completo do script que você deseja executar. Por exemplo, executar $(/home/ramces/.scripts/sample.sh) criará um subshell Bash e executará o script “sample.sh” do meu diretório home.

Você pode remover uma variável enquanto um script está em execução?

Sim. Você pode remover uma variável de um processo shell em execução inserindo o subcomando unset seguido pelo nome da variável em seu script. É importante notar que executar este comando não removerá nenhuma variável que execute fora do processo shell atual.

Você pode usar uma variável permanente dentro de um script shell externo?

Sim. É possível referir-se ao valor de uma variável que foi declarada fora do processo shell atual. No entanto, você também precisa ter cuidado ao usar variáveis externas, pois é fácil sobrescrevê-las temporariamente.

Crédito da imagem: Unsplash. Todas as alterações e capturas de tela por Ramces Red.