Shell Scripting · 7 min read · Nov 14, 2025

Shell Scripting Parte 2: Aceitando Entradas e Realizando Aritmética no Shell

Oi! Este artigo é a segunda parte da série de tutoriais sobre shell scripting do Howtoforge. A esta altura, presumo que você tenha lido a primeira parte da série e saiba como criar um script simples e executá-lo. Na segunda parte, você aprenderá como aceitar entradas do usuário e processá-las através do shell scripting. Vamos começar!

Variáveis no Linux

Assim como em linguagens de programação, o shell do Linux tem a capacidade de armazenar dados em variáveis. Uma variável é um contêiner que armazena temporariamente dados que serão processados através de uma linguagem de programação. Existem dois tipos de variáveis no Linux: as variáveis de ambiente e as variáveis de shell.

Variáveis de Ambiente

As variáveis de ambiente são as variáveis padrão no Linux e são usadas para passar informações entre processos no shell. As variáveis de ambiente são sensíveis a maiúsculas e minúsculas e devem sempre ser escritas em letras maiúsculas para serem acessadas.

A tabela abaixo mostra as variáveis de ambiente comuns no shell do Linux:

Nome da variávelUso
BASHArmazena o caminho completo do interpretador de comandos para scripts Bash
BASH_VERSIONArmazena a versão do bash da máquina atualmente utilizada
HOMEArmazena o caminho relativo do diretório home.
LOGNAMEArmazena o nome da conta do usuário atualmente logado
OSTYPEArmazena uma string que descreve o sistema operacional atual da máquina utilizada
PATHArmazena um caminho absoluto separado por dois pontos dos arquivos executáveis no Linux
PWDArmazena o diretório de trabalho atual do shell
SHELLArmazena o shell de linha de comando preferido
USERFunciona de forma semelhante ao LOGNAME. Armazena o nome da conta do usuário atualmente logado
_Armazena o nome do comando usado recentemente no shell

Para exibir o valor de uma variável de ambiente, o usuário deve preceder um sinal de dólar ($) à variável a ser acessada. Por exemplo, para exibir algumas informações do sistema, como o diretório de trabalho atual, o usuário logado e o tipo de sistema operacional usando echo, usamos:

#!/bin/bash  
 echo $PWD  
 echo $LOGNAME  
 echo $OSTYPE

O resultado é:

Para obter a lista completa de variáveis de ambiente no Linux, use o comando env.

Mudando valores das variáveis de ambiente

Para fornecer flexibilidade ao sistema, essas variáveis de ambiente podem ser manipuladas. Para definir um valor a uma variável de ambiente, use uma expressão de atribuição (sinal de igual).

Exemplo:

#!/bin/bash  
 echo $USER  
 USER="novo usuário"  
 echo $USER

O resultado do script é:

Quando você executa o script, a princípio, o $USER na linha echo $USER mostra o valor da variável USER. Ao usar um operador de atribuição (=), a variável USER muda seu valor. No entanto, se o usuário atribuir valores desconhecidos a uma variável de ambiente, o shell criará outra variável de shell semelhante à variável de ambiente no contexto local do script, mas não afetará o comportamento de outros aplicativos. Isso significa que, uma vez que nosso script seja fechado, a variável USER manterá seu valor padrão.

Note que em nosso exemplo anterior, omitimos o sinal de dólar ($) no nome da variável ao manipular valores das variáveis de ambiente, como na linha USER=”novo usuário”. Além disso, ao usar o operador de atribuição, não deve haver espaço entre o USER e o sinal de igual. Adicionar um espaço entre eles cria um erro.

Variáveis de Shell

O shell também permite que o usuário declare variáveis. Assim como no PHP, para declarar uma variável em scripts de shell, o usuário não precisa se preocupar em declarar seu tipo de dado; o interpretador detectará automaticamente o tipo de dado da variável com base nos dados que o usuário armazena nela durante a execução.

Regras para nomear variáveis de shell

Assim como em qualquer linguagem de programação, existem regras para nomear variáveis de shell. O seguinte resume as regras:

  1. Os nomes das variáveis devem começar com uma letra ou um sublinhado.
  2. Devem conter apenas caracteres alfanuméricos ou um sublinhado.
  3. As variáveis são sensíveis a maiúsculas e minúsculas, portanto, as variáveis path, PATH e Path são diferentes.

Para provar essa regra, criaremos um script simples abaixo:

#!/bin/bash  
 12abc=10  
 abc#*=10  
 _abc=10  
 _ABC=2  
 echo $12abc $abc#* $_abc $_ABC

As linhas 2 e 3 retornam um erro “comando não encontrado” porque a variável 12abc começa com um caractere numérico e a variável abc#* contém caracteres ilegais. Também provamos que _abc e _ABC são variáveis diferentes e que a linha _ABC=2 não substitui o valor de _abc.

Atribuindo valores a variáveis de shell usando o comando read:

read é um comando que permite aceitar entradas do usuário. A sintaxe para usar o comando read é:

read 

Por exemplo, criaremos um script que permitirá que um usuário insira seu primeiro e último nome e os exiba. Para informar ao usuário o que fazer, mostramos um prompt ao usuário com o comando echo.

#!/bin/bash  
 echo "Seu primeiro nome: "  
 read fname  
 echo "Seu último nome:"  
 read lname  
 echo "Olá $fname $lname ! Estou aprendendo como criar scripts de shell."

O resultado é:

Por favor, note que, assim como em nosso exemplo anterior, não precisamos declarar uma variável para usá-la. O interpretador também cria automaticamente a variável que é usada no comando read. No entanto, no exemplo, usamos repetidamente o comando echo para criar um prompt para o usuário. O comando read também tem a capacidade de criar um prompt enquanto aceita entradas do usuário. A sintaxe para usar um prompt no comando read é:

read -p "Seu prompt: " 

Para simplificar nosso código anterior, podemos reestruturar o código para:

#!/bin/bash  
read -p "Seu primeiro nome: " fname  
read -p "Seu último nome: " lname  
echo "Olá $fname $lname ! Estou aprendendo como criar scripts de shell."

Outro benefício do comando read é que o prompt de comando aparece logo após o texto e não na linha abaixo.

O comando read também pode ser usado para aceitar senhas. Ao contrário de entradas comuns, as senhas são mascaradas para fornecer segurança. A sintaxe para aceitar uma senha é:

read -s -p "seu prompt" 

Realizando aritméticas simples usando o shell

Além de aceitar entradas e exibir saídas, o shell bash também possui uma opção de aritmética embutida. A tabela abaixo resume os operadores aritméticos embutidos do shell Bash.

OperadorDescriçãoSintaxeUso
+Adiçãoa=$((b+c))Adiciona o valor de b e c e armazena em a
-Subtraçãoa=$((b-c))Subtrai o valor de c de b e armazena em a
*Multiplicaçãoa=$((b*c))Multiplica o valor de b e c e armazena em a
/Divisãoa=$((b/c))Divide o valor de b por c e armazena em a
%Móduloa=$((b%c))Realiza a divisão módulo de b e c e armazena em a
++Pré-incremento$((++aa))Incrementa o valor da variável a imediatamente
++Pós-incremento$((a++))Incrementa o valor da variável a e reflete as mudanças na próxima linha
Pré-decremento$((–a))Decrementa o valor da variável a imediatamente
Pós-decremento$((a–))Decrementa o valor da variável a e reflete as mudanças na próxima linha
Exponenciação$((a2))Eleva o valor de a à potência de 2
+=Mais igual$((a+=b))Adiciona o valor de a e b e armazena em a
-=Menos igual$((a-=b))Subtrai o valor de b de a e armazena em a
*=Vezes igual$((a*=b))Multiplica o valor de a e b e armazena em a
/=Barra igual$((a/=b))Divide o valor de a por b e armazena em a
%=Mód-equal$((a%=b))Realiza a divisão módulo entre a e b e armazena em a

Note que toda vez que você realiza uma instrução aritmética, todas as nossas variáveis devem estar envolvidas com um sinal de dólar e parênteses duplos. Ao fazer isso, o interpretador trata os valores de nossas variáveis como números inteiros. Sem isso, o interpretador trata os valores da variável como uma string. Para ter um exemplo, veja o script abaixo:

#!/bin/bash  
 read -p "Digite int1: " a  
 read -p "Digite int2: " b  
 echo $((a+b))  
 c=$a+$b  
 echo $c

Quando executamos nosso exemplo, a linha $((a+b)) adiciona os valores do usuário que estão armazenados nas variáveis a e b, respectivamente, enquanto c=$a+$b trata as variáveis a e b como strings.

Conclusão

Cobrimos como aceitar entradas e armazená-las em uma variável e como realizar operações aritméticas em scripts de shell bash. Na próxima parte, apresentaremos estruturas de controle e, particularmente, a estrutura de decisão.

Referências:

The Linux Information Project. (2007). Recuperado em 29 de abril de 2015, de Linfo.org: http://www.linfo.org/

Cooper, M. (n.d.). Advanced Bash Scripting Guide. Recuperado em 29 de abril de 2015, de http://www.tldp.org/LDP/abs/html/

Variáveis de Ambiente. (n.d.). Recuperado em 29 de abril de 2015, de Documentação do Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.