O que são variáveis ​​Bash e como você pode usá-las?

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 escrita de script. Como eles funcionam e como você pode usá-los? Vamos descobrir.

O que é uma variável Bash?

As variáveis ​​são nomes fáceis de lembrar que podem conter diferentes valores alfanuméricos. Eles são úteis, pois permitem que a mesma função seja aplicada em valores diferentes, sem a necessidade de reescrever um script/código. Eles também facilitam a escrita do script/pedaço de código, pois 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 ​​em tempo real e reutilizá-las durante sua sessão atual do Bash. Eles podem ajudar no 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ê esteja visitando vários sites. Você pode estar pesquisando ou coletando dados e criando a seguinte variável:

sitea=https://www.maketecheasier.com

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

Depois disso, se você quiser visitar nosso site com o Firefox, basta digitar:

firefox $sitea

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

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

Ao configurar novas variáveis, você pode usar qualquer nome que desejar e armazenar quaisquer strings alfanuméricas dentro delas. Tenha em mente, porém, que eles diferenciam maiúsculas de minúsculas por padrão. Assim, $siteanã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).

Variáveis ​​em Scripts

As variáveis ​​no Bash são mais úteis ao escrever scripts, pois permitem que você escreva um único script, que pode iterar por meio de diferentes strings ou atuar em partes de dados personalizadas. Digamos que você esteja escrevendo um script que todos possam usar em seus computadores, mas que sempre exibirá 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 igual e muda apenas o nome do usuário.

Tal script seria 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 ​​tornam-se indispensáveis. Um script pode ter centenas ou milhares de linhas e conter o nome do usuário em diferentes pontos. Para entendê-lo melhor, considere o seguinte script um pouco diferente:

#!/bin/bash

username=Linus
echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.

Um terminal mostrando um script básico com várias substituições de variáveis.

O script acima usará o nome definido como usernamevariável para completar o texto. Se estiver usando o nome do usuário real, você terá que digitá-lo quatro vezes, fazer o mesmo para o próximo usuário e outras quatro vezes para o próximo. De novo e de novo. Ao atribuí-lo a uma variável, você só precisa alterá-lo uma vez para cada usuário, e todas as menções ao nome do usuário no texto serão atualizadas.

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 saber onde procurar se o processo não funcionar. Vá para 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.
  • Salve seu arquivo e saia do editor. Os ajustes não serão aplicados imediatamente. Digite o seguinte no seu terminal para que entre em vigor:

source ~/.bashrc

  • Faça uso da variável recém-definida em sua sessão Bash:

echo $myname

Você pode configurar quantas variáveis ​​quiser e simplificar muito suas aventuras diárias no Bash.

Para aumentar ainda mais a 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 simples de lembrar para manter longas cadeias de texto, você pode usar aliases como alternativas fáceis para comandos complexos.

Por último, mesmo que você tenha definido permanentemente uma variável em. bashrc, você 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 o logout ou reinicialização) ou você recoloque o arquivo. arquivo bashrc .

Criando matrizes

Embora a maioria dos usuários do Bash pense em variáveis ​​como um simples link entre um 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 vários valores em um formato de índice numerado. Para criar uma matriz, siga os passos abaixo:

  • Crie um script de shell vazio:

nano array.sh

  • Use o declaresubcomando para inicializar a matriz Bash no processo shell atual.

declare -a myarray

Um terminal mostrando a etapa de declaração para uma matriz.
  • Preencha sua nova matriz usando o operador de atribuição Bash integrado. Por exemplo, a linha de código a seguir cria uma matriz com cinco elementos dentro dela:

myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)

Um terminal mostrando uma matriz básica com 5 elementos.
  • Teste se sua nova matriz funciona usando o echocomando para extrair dados dela:

echo ${myarray[1]}

Um terminal mostrando o script de matriz buscando um único elemento de matriz.

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

echo ${myarray[*]}

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

Executando Variáveis ​​Subshell

Um dos maiores recursos do Bash é a capacidade de criar subshells, onde os programas podem ser executados como se fossem funções básicas. Por exemplo, escrever ls -aem um shell script 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ê os use como entrada para outros programas dentro do seu script.

  • Para usar variáveis ​​de subshell, primeiro crie um script de shell vazio:

nano subshell.sh

  • Escreva o seguinte código clichê dentro do seu novo shell script:

#!/bin/bash

mysubshell=$(x)echo "The output of the variable is $mysubshell"

  • Substitua o “x” pelo comando que deseja executar e armazene a saída. Por exemplo, o seguinte obterá o conteúdo do arquivo world.txt e substituirá a palavra “world” por “maketecheasy”.

mysubshell=$(sed s/world/maketecheasier/g world.txt)

Um terminal mostrando uma execução de subshell simples.
  • 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 do subshell.

Manipulação de Substring

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

  • Crie um script de shell vazio:

nano substring.sh

  • Escreva o seguinte código clichê dentro do seu script vazio:

#!/bin/bash

mysubstring=hello.txt.old
echo "My filename is: ${mysubstring}"

  • A manipulação básica de substring 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 "My filename is: ${mysubstring#*.}"

Um terminal mostrando a manipulação básica de substring de prefixo.
  • 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 "My filename is: ${mysubstring%.*}"

Um terminal mostrando a manipulação básica de substring postfix.
  • O Bash também fornece uma maneira de modificar seletivamente o conteúdo de uma variável. Semelhante ao sedprograma, você pode usar o caractere “/” para localizar e substituir qualquer string dentro de uma variável:

#!/bin/bash

mysubstring=hello.txt
echo "My filename is: ${mysubstring/hello/maketecheasier}"

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

perguntas frequentes

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

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

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 unsetsubcomando seguido do nome da variável em seu script. É importante observar que a execução desse comando não removerá nenhuma variável executada fora do processo shell atual.

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

Sim. É possível fazer referência 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 screenshots por Ramces Red.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *