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

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
Depois disso, se você quisesse visitar nosso site com o Firefox, poderia simplesmente digitar:
firefox $sitea
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
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.
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”.
- Abra o arquivo “~/.bashrc” em seu editor de texto favorito.
nano ~/.bashrc- 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"
- 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- Utilize a nova variável definida em sua sessão Bash:
echo$mynameVocê 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:
- Crie um script shell vazio:
nano array.sh- Use o subcomando
declarepara inicializar o array Bash no processo shell atual.
declare-a myarray
- 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)
- Teste se seu novo array funciona usando o comando
echopara puxar dados dele:
echo${myarray[1]}
Você também pode transmitir o conteúdo de um array usando o operador “*”:
echo${myarray[*]}
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.

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.
- Para usar variáveis de subshell, primeiro crie um script shell vazio:
nano subshell.sh- 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"- 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)
- Teste sua nova variável de subshell executando seu novo script:
chmod u+x ./subshell.sh
bash ./subshell.sh
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.
- Crie um script shell vazio:
nano substring.sh- Escreva o seguinte código básico dentro do seu script vazio:
#!/bin/bash
mysubstring=hello.txt.old
echo"Meu nome de arquivo é: ${mysubstring}"- 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#*.}"
- 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%.*}"
- 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}"
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.