Você está aqui: Computação > Linguagem de Scripts para Linux > Uso de Variáveis.
Formato Livro
27/06/2011
Linguagem de Scripts para Linux

Uso de Variáveis

Usamos acima o comando echo $PATH para ver o valor da variável PATH. A shell guarda nestas variáveis informações sobre o sistema, tais como nome do sistema, nome do usuário logado e seu ID (o chamado UID), o diretório padrão do usuário e o caminho de busca (PATH) para executáveis.

#!/bin/bash
# Informações sobre o usuário
echo "Sobre o usr:" $USER
echo HOME: $HOME
echo UID: $UID

Para ver uma lista com todas as variáveis do sistema podemos usar o comando set sem nenhum parâmetro (o resultado abaixo mostra apenas as primeiras linhas.)

$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore: ... (cont) ...
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION=/etc/bash_completion
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_COMPLETION_DIR=/etc/bash_completion.d
BASH_LINENO=()
...

set também pode ser usado para alterar valores de variáveis.

Variáveis do usuário

Além das variáveis do sistema também podemos inserir variáveis do usuário, que ​​permitem armazenar e recuperar informações para uso dentro do script. O nome das variáveis podem conter até 20 caracteres, dígitos ou underline ( _ ), diferenciadas as letras maiúsculas das minúsculas. Valores são atribuídos com o sinal de igual (=), não sendo permitido o uso de espaços entre o nome, o sinal de igual e o valor. Seguem alguns exemplos:

meu_nome="James Bond"
minha_idade=58
info="foi criado em 1953 por Ian Flemnig"

O tipo de dados (no caso acima inteiro e strings) é determinado automaticamente pela shell. Uma variável é armazenada apenas dentro do script que a definiu e são apagadas ao término do script. Seu valor é referenciado por meio de um cifrão, $, como ilustrado no script abaixo.

#!/bin/bash
# como funcionam as variáveis
meu_nome="James Bond"
minha_idade=58
info="foi criada em 1953 por Ian Flemnig."
echo "A personagem $meu_nome $info"
echo "No ano de 2011 ele completou $minha_idade anos."

Ao ser executado este script produz a seguinte saída:

A personagem James Bond foi criada em 1953 por Ian Flemnig.
No ano de 2011 ele completou 58 anos.

(1) Operadores: Observe que o cifrão $ foi usado apenas para a recuperação do valor da variável e não faz parte do nome da variável.

Já vimos acima alguns operadores em funcionamento: o $ foi usado para a recuperação do valor da variável é um deles, o sinal de igual (=) para a atribuição é outro. Veremos ainda que o mesmo sinal (por exemplo =) pode ter outro significado em outro contexto. O operador backtick (`), que veremos em seguida, é outro exemplo. Backtick é o acento grave ou crase, que no teclado em português do Brasil, fica acima do acento agudo, à esquerda da letra P. Para obter um acento puro, sem estar sobre uma letra, pode ser necessário digitar a tecla duas vezes.

Operador1 backtick ou crase

Backtick é um operador muito útil que quase sempre aparece dentro de scripts. Ele permite que se atribua a saída de um comando a uma variável.

A sintaxe para o uso do operador é a seguinte:

variavel=`comando` ou variavel=$(comando),

onde a segunda é uma forma alternativa2 para se obter o mesmo efeito.

A shell executa o comando e depois atribui o resultado à variável. O seguinte exemplo mostra este uso:

#!/bin/bash
# Usando o operador crase
lista=`ls`
echo "Meus arquivos e diretorios: " $lista

O script acima exibe a expressão: Meus arquivos e diretorios: Desktop Django Documentos Downloads Pictures Programas Public Templates Ubuntu One Videos, ou seu equivalente, dependendo dos diretórios encontrados.

(2) Muitos usuários preferem o uso de $(comando) no lugar de `comando` (backticks). Eles argumentam que, em uma lista de comandos, é mais difícil ler (e interpretar) comandos delineados por `, que ainda pode ser confundido com sinais de aspas simples. O uso de um ou outro é uma questão de gosto.

Uma vez que a variável contém o resultado obtido pelo comando, este resultado pode ser manipulado à vontade. No exemplo seguinte a variável hoje contém a data no formato "ddmmaa", que é usada para compor o nome do arquivo log_ddmmaa que conterá uma lista de arquivos encontrados no diretório home/Documentos.

#!/bin/bash
# armazena a data no formato ddmmaa na variável hoje
hoje=`date +%d%m%y`
# Armazena a lista em ~/Documentos no arquivo log_ddmmaa
ls ~/Documentos/ -al > log_$hoje

Suponha que este script seja executado em 28 de junho de 2012. A variável hoje recebe o valor hoje="280612". O parâmetro "+%d%m%y" instrui date a formatar sua saída listando dia-mes-ano, com dois dígitos e sem separador. A última linha executa o comando ls sobre o diretório ~/Documentos. As chave ou opção - a (ou --all) produz uma saída com todos os arquivos (inclusive iniciados por . ou ocultos) e -l uma lista completa incluindo permissões, usuário, grupo, tamanho, data de modificção e nome do arquivo. No final da execução o arquivo log_280612 deverá ser encontrado dentro do diretório atual contendo esta lista. Encontramos aqui, mais uma vez, o redirecionamento (>), que pega a saída do comando ls e o armazena em um arquivo.

Redirecionamento:

comando > arquivo Armazena a saída de comando em arquivo
comando >> arquivo Acrescenta a saída de comando ao arquivo
comando < arquivo Usa o conteúdo de arquivo como parâmetro de comando
Envie seu comentário!

Leia no site: | Devemos Acreditar na Ciência? | Hipótese, Modelo e Teoria em Física | Cosmologia - Estrutura do Universo | História da Pessoa com Deficiência |