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
Depois disso, se você quiser visitar nosso site com o Firefox, basta digitar:
firefox $sitea
Muito mais fácil – e mais legível. A $sitea
variá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
, sitec
e 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, $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).
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
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.
O script acima usará o nome definido como username
variá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"
- 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. Você pode descobrir mais sobre eles aqui , onde transformamos todo um comando de compactação 7zip em um alias de dois caracteres.
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
declare
subcomando para inicializar a matriz Bash no processo shell atual.
declare -a myarray
- 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)
- Teste se sua nova matriz funciona usando o
echo
comando para extrair dados dela:
echo ${myarray[1]}
Você também pode transmitir o conteúdo de um array usando o operador “*”:
echo ${myarray[*]}
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 -a
em um shell script 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ê 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)
- Teste sua nova variável de subshell executando seu novo script:
chmod u+x. /subshell.sh
bash. /subshell.sh
FYI : além das variáveis, esses são os caracteres especiais que você deve conhecer no Bash .
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#*.}"
- 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%.*}"
- O Bash também fornece uma maneira de modificar seletivamente o conteúdo de uma variável. Semelhante ao
sed
programa, 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}"
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 unset
subcomando 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