Unidade III – Programação Script Parte 1 Slides 05
Unidade III – Programação Script
◦ 3.1 – Comentários em um script
◦ 3.2 – Criação e execução de um script ◦ 3.3 – Variáveis
◦ 3.4 – Substituição de variável ◦ 3.5 - Concatenação
Toda linha de comentário deverá ser precedida do
caractere #.
Exemplos:
#Meu primeiro script
#Data: 11/11/11
Comentário da “primeira linha”
As linha iniciadas com o caractere # serão “ignoradas”
pelo interpretador shell, exceção à primeira linha
iniciada com #!, a qual indicará o interpretador a ser usado. A combinação “#!” também é conhecida como
“shebang” ou “hashbang” (contração de sharp bang). Exemplos:
Observações:
Lembre-se que um script é executado em um outro shell (subshell) com interpretador especificado na primeira linha.
Quando um script é executado, o seu arquivo é passado como parâmetro para o interpretador.
Um comando que aceite um arquivo como parâmetro, poderá ser um interpretador.
Um script shell é um arquivo texto, padrão ASCII.
Para criar um script, usar um editor de texto ou um
editor de script da sua preferência (nano, mcedit, gedit).
Exemplos:
No modo gráfico: gedit
Sintaxe: gedit ou gedit nome_arquivo ou gedit nome_arquivo &
No modo texto: nano
Sintaxe: nano ou nano nome_arquivo ou nano nome_arquivo &
Nano
O menu de teclas de atalho fica localizado no rodapé. No atalho, ^ = tecla control, ou seja:
CTRL-X - Sai do editor. Irá perguntar se quer salvar seu trabalho (Y/N).
CTRL-R - Ler e adiciona o texto de um arquivo no texto atual.
CTRL-C - Mostra a posição atual do cursor. CTRL-K - 'Recorta' o texto.
CTRL-U - 'Cola' o texto. CTRL-U - 'Cola' o texto.
CTRL S - Salva o arquivo e continua editando.
CTRL-T - verifica a ortografia do seu texto. CTRL-W - Faz uma busca no texto.
Passos:
1. Criar o arquivo;
2. Digitar os comandos (algoritmo do script);
3. Salvar o arquivo (e fechá-lo*);
4. Testar o script (bash nome_arquivo);
5. Conceder permissão de execução (chmod);
6. Disponibilizar no PATH (jogar na pasta bin do usuário).
7. Executar o script de qualquer lugar.
1. Criar o arquivo;
Exemplos:
gedit ou gedit script1 ou gedit script1 &
3. Salvar o arquivo (e fechá-lo*);
Salvá-lo com o nome “script1”.
Observações:
1) Normalmente os scripts possuem extensão “.sh”.
2) Não salvar o arquivo com o mesmo nome de uma palavra-chave ou comando do Bash.
4. Testar o script (bash nome_arquivo); Usar o interpretador para testar.
5. Conceder permissão de execução (chmod);
Usar o comando chmod com a opção de execução (podendo ser também no modo octal).
Testando execução sem explicitar o interpretador Observações:
1) A sintaxe “./nome_arquivo” executa um programa ou script no diretório corrente.
6. Disponibilizar no PATH (jogar na pasta bin do usuário). Observação:
A maioria das distribuições Linux incentiva a prática em que cada usuário tenha um diretório específico para os seus programas de uso pessoal. Este diretório é chamado de “bin” e é um subdiretório do seu diretório home.
7. Executar o script de qualquer lugar.
Observação:
Definição de variável
Para que os scripts manipulem os dados, estes devem
ser armazenados em variáveis, assim sendo, variáveis pode ser definida como sendo:
Local da “memória”, referenciado por um nome
Regras para nomes identificadores de variáveis
1. O primeiro caracter deve ser uma letra ou sublinhado
(“_”).
2. Os demais caracteres podem pertencer ao seguinte conjunto:
{_,a,b,c,...,z, A,B,C,...,Z,0,1,2,...,9}, e sem limite de quantidade.
3. Não possuir espaços em branco nem conter caracteres de pontuação ou especiais, tais como $, #,&,*,!,., etc.
Os nomes devem ser significativos, explicitando o seu
conteúdo ou finalidade.
Exemplos:
◦ DIR_BACKUP
◦ _diretorio_backup
◦ Data_proc_01
Declaração
Não existe declaração formal de variável em um scritp shell. Uma variável pode ser criada e imediatamente usada em qualquer lugar do script.
Para criar uma variável, digite o nome da mesma seguido
imediatamente por um sinal de igual ("=").
Não são permitidos espaços em ambos os lados do sinal de
igual.
Após o sinal de igual, atribuir a informação que você deseja
armazenar.
Exemplos:
_NomeScript=Teste
finalidade_do_script=Nenhuma prioridade=10
O operador de atribuição de valor a uma variável é o
símbolo “=” (igual).
O conteúdo de uma variável é sempre armazenado
como sendo uma string (literal).
Não há limite para a quantidade de caracteres que a
variável pode armazenar.
Para limpar o valor de uma variável faz-se uma
atribuição nula (vazia). Exemplo:
Destruição de uma variável
Para se destruir uma variável deve-se utilizar o
comando unset.
Exemplos:
unset _NomeScript
Para se referenciar, ou seja, para se obter (extrair) o
valor de uma variável, utiliza-se o nome da variável precedido do caractere $. ($nome_variável)
Este mecanismo é conhecido como substituição ou
expansão de uma variável.
Sempre que o shell vê uma palavra que começa com um
“$”, ele tenta descobrir o que foi atribuído à variável e efetuar a substituição (troca).
Exemplo:
mensagem=“Olá mundo.” criação de variável
echo $mensagem impressão na tela do conteúdo
complemento=Voilá! criação de variável
saida=$mensagem atribuição de valor de uma variável à outra
Exemplo:
mensagem=“Olá mundo.” criação de variável
echo $mensagem impressão na tela do conteúdo
complemento=Voilá! criação de variável
saida2=“$mensagem $complemento” concatenação
As “variáveis de ambiente” armazenam valores que são
utilizados para fins configuração do ambiente do usuário.
As variáveis de ambiente são consideradas como sendo
variáveis globais para o shell, isto é, disponíveis para os scripts executados naquele shell.
O shell e os programas são executados em um ambiente
configurado por estas variáveis.
Estes valores ficam disponíveis a partir do instante em que o
usuário faz o login.
As “variáveis de ambiente” são geralmente consideradas
constantes, uma vez que raramente são alteradas.
Por convenção, variáveis de ambiente são escritas com os
As variáveis de ambiente são atualizadas através dos
scripts de inicialização, os quais são executados toda vez que o usuário faz o login.
O ambiente configurado do usuário contém variáveis
Comandos para configurar ou criar variáveis de ambiente
export
Cria e/ou modifica o valor de uma variável de ambiente.
readonly
Comandos para visualizar variáveis de ambiente
env (ou printenv ou export):
Exibe apenas as variáveis que foram exportadas pelos scritps de inicialização ou diretamente (manualmente) no shell pelo usuário.
set
Exemplos:
$HOME : Mostra o diretório home do usuário.
$PWD : mostra o diretório atual de trabalho do usuário.
$OLDPWD : Mostra o diretório anterior de trabalho do usuário.
$HISTFILE : Mostra o nome do arquivo que armazena as linhas de comando
digitadas pelo usuário (no shell bash o arquivo padrão é o .bash_history).
$HISTSIZE : Mostra o número de linhas de comando digitadas pelo usuário que
são memorizadas pelo sistema.
$LOGNAME : Mostra o nome de acesso do usuário.
$USER : mostra o nome do usuário atual.
$UID : mostra o número de identificação do usuário.
$MAIL : Mostra o diretório que contém as mensagens de correio eletrônicas
$SHELL : mostra o nome do shell atualmente em uso.
$SHLVL : mostra o número de shells atualmente em execução na conta do usuário.
$OSTYPE : Mostra o sistema operacional em uso.
$TERM : mostra o tipo de terminal em uso.
$PPID : mostra o número de identificação do processo que
inicializou o shell do usuário. Existe um diretório em /proc com este número e que contém informações sobre o processo em questão.
$PS1 : mostra a definição do prompt da linha de comando.
$PS2 : mostra a definição do prompt secundário da linha de comando.
Arquivos de inicialização do ambiente do usuário
O bash, quando é carregado através de um shell que
requer login (nome e senha), procura os arquivos de scripts abaixo, em seqüência, os comandos neles contidos, caso existam:
1. /etc/profile
2. ~/.bash_profile
3. ~/.profile
Caso o bash seja carregado através de um shell que não
requer login (janela de terminal), o seguinte arquivo é executado:
Sobre os arquivos
/etc/profile Contém as variáveis de ambiente do sistema que são disponibilizadas para todos os usuários do sistema no momento do login. Somente o usuário root tem permissão para alterar este arquivo. Ele é lido antes do arquivo de configuração pessoal de cada usuário (.profile(root) e .bash_profile).
~/.bash_profile Este arquivo reside no diretório pessoal de cada usuário. É executado por shells que usam autenticação (nome e senha). O .bash_profile contém comandos que são executados para o usuário no momento do login no sistema, após o /etc/profile. Note que este é um arquivo oculto pois tem um "." no inicio do nome. Ele aponta para o arquivo ./bashrc.
Arquivo executado no processo de logout
1. ~/.bash_logout contém os comandos a serem executados pelo sistema no fechamento da sessão pelo usuário.
O diretório dos arquivos modelos (templates)
1. /etc/skel Este diretório contém os modelos de arquivos “.bash_profile” e “.bashrc” que serão copiados para o diretório pessoal dos usuários no momento que for criada uma conta no sistema. Desta forma você não precisará configurar estes arquivos separadamente para cada usuário.
O arquivo de histórico dos comandos