Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 03 2014.1 Sumário • Scripts vs. linguagens compiladas; • Variáveis; • Comandos de entrada e saída; • Caracteres especiais. 2 Contexto – Shell • O shell é uma camada acima do kernel, através da qual o usuário faz as requisições para o kernel para que este entre em contato com o hardware. – É um programa que estabelece a interface entre o usuário e as diversas funções e serviços do sistema operacional (kernel); • Resumindo: o shell pode ser visto como um interpretador de comandos que transmite ao kernel o que deve ser realizado. 3 Shell script • Podemos dizer então que um Shell Script é uma espécie de roteiro a ser interpretado pelo shell: – São uSlizados em vários sistemas operacionais; – Podem ser escritos em qualquer editor de textos; – Suportam desde simples comandos como criar um diretório (mkdir) até poderosos scripts de configuração; – Podem ser uSlizados para: • Apagar periodicamente arquivos anSgos de uma pasta; • Realizar um back-‐up do sistema; • Configurar vários servidores distribuídos geograficamente. 4 Scripts vs. Ling. Compiladas • A maioria dos programas comerciais são escritos em linguagens compiladas. – Tais programas são escritos em uma linguagem de programação e devem ser traduzidos para um código objeto (compilador) e posteriormente ligados às bibliotecas (linkeditor) a fim de se obter um programa executável. – Estes programas podem ser executados diretamente pelo hardware do computador (controlado pelo SO). – Suas grandes vantagens são a performance e o poder de expressão. 5 Scripts vs. Ling. Compiladas • Linguagens de script são interpretadas. – As instruções são traduzidas uma após a outra no ato da execução. Sempre que forem executados, a tradução deve ser realizada novamente. – A grande vantagem na uSlização de scripts é sua simplicidade e rapidez para o desenvolvimento de tarefas simples e repeSSvas, caracterísScas da administração de sistemas. – Todas as linguagens de script são interpretadas, porém nem todas as linguagens interpretadas são linguagens de script (p.ex. Java pode ser interpretada e não é script). 6 Programando em Shell Script • A parSr de agora, vamos começar a ver os primeiros elementos para criação de scripts; • Na aula de hoje: – Variáveis; – Comandos de entrada e saída de dados; – Caracteres especiais; • Nas próximas aulas: – Argumentos, operações matemáScas; – Testes e condicionais, comandos para repeSção, etc; 7 Variáveis • São a forma que as linguagens de programação uSlizam para representar dados; • Uma variável nada mais é do que um rótulo, um nome atribuído a uma posição na memória do computador contendo uma informação; • Cada variável possui um valor, que consiste na informação que foi atribuída a ela e está armazenada na respecSva posição de memória. 8 Variáveis • EsquemaScamente, representamos a memória do computador como na figura ao lado; • Inicialmente, deixamos as células em branco, indicando que ainda não uSlizamos aquele espaço. 9 Variáveis • Quando criamos uma variável e atribuímos um valor a ela: x=123 • Uma posição de memória é alocada e seu nome passa a funcionar como um rótulo para aquela célula. 10 Variáveis • Criando outra variável: y=456 • Outra posição é alocada e o valor armazenado. 11 Variáveis • Em shell script, o nome de uma variável inicia sempre por uma letra ou por um sublinhado (_), e pode conter qualquer quanSdade de letras, dígitos e sublinhados. Exemplos: – Válidos: x telefone _y b1 A_2 n_alunos IDADE___2 – Inválidos: 1x _y.6 a1+ num-alunos sal/hora 12 Variáveis • Ao contrário de muitas linguagens de programação, em shell script as variáveis não são classificadas pelo Spo; • Neste caso, o conteúdo das variáveis são sequências de caracteres (strings), mas dependendo do contexto podem ser uSlizadas em operações aritméScas; • Não há limite para a quanSdade de caracteres que uma variável pode conter. 13 • A atribuição de valores a uma variável é feita escrevendo-‐se o nome da variável seguido imediatamente do caractere = e o valor a ser atribuído, sem qualquer espaço entre eles. Exemplo: x=30 tipo=jogador pi=3.1415 Variáveis 14 Variáveis • Para atribuir a uma variável um valor que contenha espaços, este valor deverá ser colocado entre aspas. Exemplo: nome="Edson Nascimento" • Para acessar o valor de uma variável uSliza-‐se o caractere $ precedendo seu nome. Por exemplo: echo $nome • Para limpar o valor de uma variável basta fazer uma atribuição nula. Por exemplo: nada= 15 Variáveis • EXERCÍCIO: indique com um X os nomes válidos para uma variável: ( ) endereco ( ) 21brasil ( ) nome_usuario ( ) nome*usuario ( ) cidade3 ( ) #cabec 16 Comandos de E/S: echo • O comando echo imprime na saída padrão (tela) uma expressão ou variável.• Parâmetros: -e -‐ trata caracteres de escape; -n -‐ suprime o “new line” do final; • Exemplo: echo "teste \n (contrabarra n)" echo –e "teste \n (contrabarra n)" 17 Comandos de E/S: echo • O comando echo imprime na saída padrão (tela) uma expressão ou variável. • Parâmetros: -e -‐ trata caracteres de escape; -n -‐ suprime o “new line” do final; • Exemplo: echo "teste \n (contrabarra n)" echo –e "teste \n (contrabarra n)" 18 $ echo "teste \n (contrabarra n)" teste \n (contrabarra n) $ echo –e "teste \n (contrabarra n)" teste (contrabarra n) Comandos de E/S: echo • Se a opção -e está em efeito, os seguintes caracteres de escape são reconhecidos: \\ -‐contra barra; \a -‐alerta (sonoro); \b -‐backspace; \n -‐nova linha; \r -‐retorno de “carro”; \t -‐tabulação horizontal; \v -‐ tabulação verScal (efeito escada). 19 Comandos de E/S: printf • O comando printf é uma variação do comando echo e fornece uma saída formatada; • Sua sintaxe é: printf string-formato [argumentos...] • O formato segue o padrão do comando printf da linguagem C (veremos mais detalhes adiante). 20 Comandos de E/S: read • O comando read lê um valor a parSr da entrada padrão (teclado) e o armazena em uma variável; • Exemplo: echo "nome:" read nome echo "Boa noite $nome. Seja bem-vindo!" • Parâmetros: -s -‐ não exibir o que é digitado (senha); -p "string" -‐ mostrar string antes da leitura. 21 Comandos de E/S: read • O comando read lê um valor a parSr da entrada padrão (teclado) e o armazena em uma variável; • Exemplo: echo "nome:" read nome echo "Boa noite, $nome. Seja bem-vindo!" • Parâmetros: -s -‐ não exibir o que é digitado (senha); -p "string" -‐ mostrar string antes da leitura. 22 nome: Alexandre Boa noite, Alexandre. Seja bem-vindo! Comandos de E/S • Exemplos echo -n "Colocação: " read coloc echo "Você ficou em ${coloc}o lugar." 23 Comandos de E/S • Exemplos echo -n "Colocação: " read coloc echo "Você ficou em ${coloc}o lugar." 24 $ ./teste1.sh Colocação: 5 Você ficou em 5o lugar. Comandos de E/S • Exemplos echo -n "Colocação: " read coloc echo "Você ficou em ${coloc}o lugar." 25 $ ./teste1.sh Colocação: 5 Você ficou em 5o lugar. Atenção para as chaves!! Comandos de E/S • Exemplos echo -n "Colocação: " read coloc echo "Você ficou em ${coloc}o lugar." read -p "Colocacao: " coloc echo "Você ficou em ${coloc}o lugar." 26 Comandos de E/S • Exemplos echo -n "Colocação: " read coloc echo "Você ficou em ${coloc}o lugar." read -p "Colocacao: " coloc echo "Você ficou em ${coloc}o lugar." 27 $ ./teste2.sh Colocação: 1 Você ficou em 1o lugar. Caracteres Especiais • Caracteres especiais são aqueles que possuem um significado além do seu significado literal; – Ou seja, dependendo da forma como aparecem no script, podem ter diferentes interpretações; • Assim como as palavras-‐chave, caracteres especiais são parte importante dos scripts; 28 Caracteres Especiais # -‐ Linhas que se iniciam com o caractere # são consideradas comentário, ou seja, não são executadas. Também são comentários caracteres que venham logo após um # (desde que haja pelo menos um caractere em branco antes do #). echo O que vem ao lado? # COMEÇA um comentario. echo O que vem ao lado?# COMEÇA um comentario. 29 Caracteres Especiais # -‐ Linhas que se iniciam com o caractere # são consideradas comentário, ou seja, não são executadas. Também são comentários caracteres que venham logo após um # (desde que haja pelo menos um caractere em branco antes do #). echo O que vem ao lado? # COMEÇA um comentario. echo O que vem ao lado?# COMEÇA um comentario. 30 $ echo O que vem ao lado? # COMEÇA um comentario. O que vem ao lado? $ echo O que vem ao lado?# COMEÇA um comentario? O que vem ao lado?# COMEÇA um comentario? Caracteres Especiais ; -‐ Separador de comandos. USlizado para permiSr a execução de dois ou mais comandos em uma mesma linha. • Exemplo: $ pwd; cd /etc; pwd; cd -; pwd 31 Caracteres Especiais ; -‐ Separador de comandos. USlizado para permiSr a execução de dois ou mais comandos em uma mesma linha. • Exemplo: $ pwd; cd /etc; pwd; cd -; pwd 32 $ pwd; cd /etc; pwd; cd -; pwd /home/alexandre/myScripts /etc /home/alexandre/myScripts * -‐ atua como um coringa; • Exemplos: $ cd doc* – Procura pelo primeiro diretório cujo nome começa com doc e entra nele; $ ls doc* – Lista todos os arquivos e diretórios cujos nomes começam com doc; $ echo * – Exibe na tela os nomes de todos os arquivos e diretórios da pasta atual; Caracteres Especiais 33 Caracteres Especiais $ -‐ SubsStuição de variável; • O operador $ precedendo o nome de uma variável, faz a subsStuição do seu nome pelo valor; • Exemplo: var1=5 var2=23skidoo echo $var1 # 5 echo $var2 # 23skidoo 34 Caracteres Especiais $ -‐ SubsStuição de variável; • O operador $ precedendo o nome de uma variável, faz a subsStuição do seu nome pelo valor; • Exemplo: var1=5 var2=23skidoo echo $var1 # 5 echo $var2 # 23skidoo 35 $ var1=5 $ var2=23skidoo $ echo $var1 # 5 5 $ echo $var2 # 23skidoo 23skidoo • Caracteres de escape para permiSr que caracteres especiais tenham seu significado literal: \ -‐ uSlizado para um único caractere; " -‐ agrupa o texto comouma única string e preserva o significado literal da maioria dos caracteres especiais, porém o shell processa caracteres de escape, variáveis, subsStuição de comandos, etc. ' -‐ em sequências de caracteres, preserva o significado literal de todos os caracteres especiais. Caracteres Especiais 36 • Exemplo: $ echo '*' $ echo \* $ echo "*" $ echo "$PATH" $ echo '$PATH' Caracteres Especiais 37 • Exemplo: $ echo '*' $ echo \* $ echo "*" $ echo "$PATH" $ echo '$PATH' Caracteres Especiais 38 $ echo '*' * $ echo \* * $ echo "*" * $ echo * aula03_sl09.sh ex_if_1.sh ex_if_2.sh ex_if_3.sh toscript.sh $ echo "$PATH" /usr/local/bin:/usr/bin $echo '$PATH' $PATH Caracteres Especiais ` -‐ (acento grave) SubsStuição de comando. | -‐ (pipe) a saída de um programa se transforma na entrada do anterior. $ echo "Existem `who | wc –l` usuarios conectados" • Neste caso, o shell executa os comandos entre os acentos graves e exibe na tela o resultado 39 Caracteres Especiais ` -‐ (acento grave) SubsStuição de comando. | -‐ (pipe) a saída de um programa se transforma na entrada do anterior. $ echo "Existem `who | wc –l` usuarios conectados" • Neste caso, o shell executa os comandos entre os acentos graves e exibe na tela o resultado 40 $ echo "Existem `who | wc –l` usuarios conectados" Existem 6 usuarios conectados • Redirecionamento de entrada e saída: – Observe o exemplo abaixo. O comando cat uSliza a entrada e saída padrões: Caracteres Especiais 41 $ cat Este é um teste Este é um teste Só serve para ver como funciona o cat Só serve para ver como funciona o cat Para terminar, pressione <ctrl> D Para terminar, pressione <ctrl> D ^D • Redirecionamento de saída; > -‐ redireciona a saída padrão do comando para o arquivo cujo nome vem à direita do >. Se o arquivo não exisSr, cria um novo. Se exisSr, apaga o conteúdo anterior; • Exemplo: $ cat > saida.txt >> -‐ Insere o texto ao final do arquivo. Se o arquivo não exisSr, cria um novo; Caracteres Especiais 42 • Redirecionamento de saída; > -‐ redireciona a saída padrão do comando para o arquivo cujo nome vem à direita do >. Se o arquivo não exisSr, cria um novo. Se exisSr, apaga o conteúdo anterior; • Exemplo: $ cat > saida.txt >> -‐ Insere o texto ao final do arquivo. Se o arquivo não exisSr, cria um novo; Caracteres Especiais 43 $ cat > saida.txt Este é um teste Só serve para ver como funciona o cat Para terminar, pressione <ctrl> D ^D • Redirecionamento de entrada; < -‐ redireciona a entrada padrão do comando para o arquivo cujo nome vem à direita do <; • Exemplo: $ cat < saida.txt – Exibe o conteúdo do arquivo saída.txt na saída padrão. Caracteres Especiais 44 • Redirecionamentos: – Mais exemplos: $ tr 'E' 'e' < entrada.txt > saida.txt – Troca todos os E’s maiúsculos por e’s minúculos do arquivo entrada.txt e salva em saida.txt. ls –l | tr 'a-z' 'A-Z' – Listagem longa dos arquivos subsStuindo todas as letras minúsculas por maiúsculas. Caracteres Especiais 45 Estudo dirigido • Leitura do capítulo 3 do livro: “Advanced Bash-‐ScripSng Guide” • Leitura do itens 6 do livro: “Classic Shell ScripSng” 46 Próxima aula... • Argumentos; • Expansão aritméSca: let, (( )) e $(( )); • Operadores matemáScos; • Exercícios. 47
Compartilhar