Sistemas Operacionais II O Shell Bash Objetivos • Conhecer a sintaxe dos comandos; • Trabalhar com funções; • Trabalhar com variáveis; • Expressões aritméticas; • Controle de Fluxo. Escape Exemplos Funções Uma função de shell é um grupo de comandos dentro de um script de shell. As funções shell permitem modularizar seu programa, dividindo a complexidade em tarefas atômicas. nome (){ o script fica aqui dentro } Exemplo #!/bin/bash #Criei uma funcao minhaFuncao(){ echo "Apenas uma funcao Teste” } #Chamando a funcao de dentro do script minhaFuncao Prática N. 01 • Fazer uma função que escreva seu nome e chamar a função. Todos os exercícios de Script devem ser enviado o script e não o resultado (output). Parâmetros Utilizamos $ seguido da posição do parâmetro para capturar seu valor. Exemplo #!/bin/bash #Criei uma funcao minhaFuncao(){ echo "Apenas uma funcao Teste com parametro $1 e $2” } #Chamando a funcao de dentro do script echo "Exemplo com dois parametros (`minhaFuncao Wellington Oliveira`)" Resultado aluno@vml:~/Desktop$ bash executa.sh Exemplo com dois parâmetros (Apenas uma função Teste com parâmetro Wellington e Oliveira) Prática N. 02 Fazer uma função para realizar a divisão de um número por outro e retornar o valor. Variáveis Variável é um espaço utilizado para armazenar um valor que ainda não se conhece (durante a codificação ou edição de scripts). Para criar: var=“Um exemplo” Para usar: echo “Estou usando a variavel: $var” Prática N. 03 Criar um script com uma variável e escrever ela na tela. Variáveis Internas do Shell O Shell possui algumas variáveis internas usadas para desenvolver scripts de qualidade. Variáveis Internas do Shell Prática N. 04 Fazer um script que utilize todas as variáveis internas do shell, só que por favor, concatenar com texto para ficar show. Outras variáveis do Shell Array Array são coleções de elementos semelhantes. mensagem=(prof wellington pinto de oliveira) Array mensagem[0]=prof mensagem[1]=wellington mensagem[2]=pinto mensagem[3]=de mensagem[4]=oliveira Array Prática N. 05 Fazer um array com seu nome e exibir o primeiro nome e o último nome. Operadores O Bash utiliza os operadores aritméticos da linguagem C. Operadores Operadores Exemplos #!/bin/bash expr 1 + 3 expr 2 – 1 expr 10 / 2 expr 20 % 3 expr 10 \* 3 echo `expr 6 + 3` Prática N. 06 Fazer um script que utiliza os operadores (++ -** + - / *) Usar os números do seu RA Desvio de fluxo Utilizamos o if para desviar um fluxo dado uma condição. if condição then #bloco se verdade else #bloco se falso fi Exemplo #!/bin/bash if [ $# = 0 ] then echo "Não existe Argumentos" else echo "Existe argumentos" fi Prática N. 07 Se seu RA (registro acadêmico) for par escreva na tela “Meu RA é par” caso contrário escreva na tela “Meu RA é Impar”. Laço de Repetição Permite realizar iterações um determinado bloco de script. Sintaxe for for( inicial; condição; incremento) do done Exemplo #!/bin/bash meuarray=(wellington pinto de oliveira) tLen=${#meuarray[@]} for (( i=0; i<${tLen}; i++ )); do echo "Parte: ${meuarray[i]} " done Sintaxe for for elemento in coleção do done Exemplo #!/bin/bash for pessoa in `users` do echo $pessoa done Prática N. 08 Fazer um script para listar o diretório corrente de execução e exibir somente os arquivos que são .sh Prática N 09 Listar o diretório corrente e exibir o nome de todos os arquivos com menos de 10 caracteres (no nome). Prática N. 10 Listar o diretório Desktop (arquivos e diretórios) e exibir o tipo de arquivo ou diretório. Prática N. 11 Exibir todos os usuários logados no formato: Usuário: xxxxxx Onde xxxxx é o login do usuário Prática N. 12 Listar os grupos dos usuários, no formato: Usuário xxxxx percente aos grupos: -yyyyy -yyyyy Prática N. 13 Para cada usuário criar a seguinte arvore de diretórios na posta home (do usuário). ~/Faculdade/SistemasOperacionasi ~/Faculdade/LinguagemdeProgramacao ~/Faculdade/InteligenciaArtificial ~/Diversao/Livros ~/Diversao/Trabalhos ~/Diversao/TestesProgramacao Prática N. 14 Pesquisar na web como usar o comando gzip Criar um script para compactar a pasta ~ do usuário e salvar em /backup/nomedousuario.gz Referência • SILVER, Ellen; LOVE, Robert; ROBBINS, Arnold. Linux: o guia essencial. 5. ed. Porto Alegre: Bookman, 2006.