Shell Script – Variaveis

Esta ae um assunto importante de ser visto, Shell Script. Principalmente para usuários Linux e SysAdmin de servidores Linux, utilizei muito em meu TCC para automatizar tarefas e até hoje escrevi apenas um post, acho que vale a pena retomar esse assunto visto que ajudaria muita gente com tudo que aprendi e uso hoje, principalmente em servidores.

E hoje abordarei sobre variáveis, a ideia é a mesma de outras linguagens de programação com a diferença de não ter que informar o tipo antes, e uma variável em shell script pode conter um valor, uma string ou a saída de um comando, vamos ver logo abaixo um exemplo básico.

O exemplo acima pode ser escrito em gedit, vim, vi, nano, emacs ou o editor que preferir, e no nosso caso foi salvo como exemplo1.sh, e salvo em um diretório projetos/shell script/ no /home, segue a saída do script:

Eu particularmente e alguns amigos utilizamos os nomes das variáveis em maiúsculo, mas não é nenhuma regra pode ser tudo minúsculo também, é uma questão de adaptação e cultura.
Vamos avançar e agora obter a saída de um programa e armazenar em uma variável, no exemplo2.sh abaixo:

Mesmo exemplo anterior apenas inserimos o comando ls -1 no diretório /home/ do usuário atual, vamos analisar a saída:

Algo saiu errado, não era essa a saída, e sim listar todos diretórios e arquivos do meu home. Um detalhe importante que fiz questão de errar foi a maneira de inserir o comando ls, quando queremos executar um comando do Linux e capturar a saída deve-se colocar o mesmo dentro de comando ou $( comando ), vamos corrigir e verificar a saída.

Executando:

Legal, demos um ls no diretório do home atual e a saída foi exibida após eu inserir um echo(), agora tenho certeza que alguém deve ter notado aquele $HOME no meio do script e em lugar nenhum eu declarei ele, pois é, é verdade e essa é uma variável do sistema, como diversas outras que existem e é muito utilizada em shell script, vamos conhecer algumas e brincar com elas no shell script.

$USER Exibe o nome do usuário logado no shell
$PWD Exibe o diretório atual, no caso onde o script esta sendo executado
$HOME Exibe o diretório do usuário logado
$SHELL Exibe o shell utilizado
$OSTYPE Exibe o tipo do sistema operacional
$RANDOM Gera um numero randômico e exibe na tela
$DISPLAY Exibe o nome do computador e o numero do display
$UID Exibe o User ID de quem executou o script
$PATH Path do sistema atual
$LANG Exibe o idioma que o sistema esta usando

Então esta ae, como usei $HOME ele listou pra mim tudo do meu home, vamos fazer um shell script combinando com mais alguns, segue o exemplo3.sh.

Creio que os comentários e o que já foi dito explica o script acima, vamos a saída:

Agora algo importante saber, é possível alterar uma variável em tempo de execução? Ou melhor uma variável do sistema?
A resposta é sim, e vamos ver no exemplo4.sh.

Saída do script:

Usei o exemplo de alterar o PATH porque eu uso assim, quando um script irá compilar usando gcc para ARM tenho um PATH no topo, ae depois tenho outro que compila para x86, e terminando o script o PATH do sistema não foi alterado, muito útil isso.
Temos mais um pouco de variáveis em shell script para ficar crack (rs), agora tem um certo tipo de variável muito conhecido como variáveis especiais, vamos conhecer:

$0 Exibe o nome do script
$? Exibe o estado do ultimo comando executado, 0 ou 1
$$ Exibe o PID do script
$_ Guarda o valor do ultimo parâmetro do ultimo comando executado
$* Exibe todos os parâmetros informados
$# Exibe o numero total de parâmetros passados
[email protected] Idem ao $*, acrescentando proteção
$! Exibe o PID do processo em background (job)
$1 Exibe o primeiro parâmetro informado
$8 Exibe o oitavo parâmetro informado

Vamos encerrar com o ultimo script reunindo as informações acima e mais algumas particularidades comentadas, segue o exemplo5.sh.

Saída:

Agora vamos passar alguns parâmetros na frente do script:

Essa parte de cortar a string nome e manipular foi um extra pra vocês verem o poder do shell script, com isso já é mais que suficiente para avançar em shell script e sabendo de todo esse poder da para automatizar e criar scripts bem legais.

Espero que tenham gostado, até a próxima!

Referências

http://gnulinuxbr.com/2010/03/18/variaveis-shell-script/
http://aurelio.net/shell/canivete/

Share Button

CC BY-NC-SA 4.0 Shell Script – Variaveis by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.