300 likes | 366 Views
Iº Workshop Linux da Unijorge. Shell Script. Tópicos a serem abordados:. prompt. Apresentação O que é Shell? Shell Script Primeiros Scripts Comandos Básicos Saída na Tela Interação com Usuário Variáveis Exercício Conceitos mais Avançados Recebimento de Parâmetros
E N D
Iº Workshop Linux da Unijorge Shell Script
Tópicos a serem abordados: prompt • Apresentação • O que é Shell? • Shell Script • Primeiros Scripts • Comandos Básicos • Saída na Tela • Interação com Usuário • Variáveis • Exercício • Conceitos mais Avançados • Recebimento de Parâmetros • If, Case, For e While • Exercício !# /bin/sh Linux Linguagem Interpretada pwd read echo man w df date then if $1 X=$((1+2+3)) tar
Tópicos a serem abordados: • Comandos Avançados • Backup • Comando Tar • Comando cp • Redirecionamento de E/S • Pipelines • Variáveis com Argumentos • Funções • Comando cut • Comandos cat e tac • Comando grep • Comando head • Comando nl • Comando paste • Comando sort • Comando tail • Comando tr tar.gz tar -czpf cp /home
O que é Shell? Shell pode ser definido como o interpretador de instruções e comandos, no nosso caso, do Linux. Quando o usuário ou sistema executa qualquer comando, o Shell é responsável pela correta 'interpretação' deste. Não é para menos que ele é conhecido como 'interpretador de comandos'.
O que é Script? Scripts, podem ser definidos como arquivos executáveis, com instruções definidas, conhecidas e claras, que são executadas por um interpretador.
Então Shell + Script = ? Podemos então chegar a conclusão que Shell Script nada mais é do que um arquivo texto que pode ser executado (ativando seu bit de execução “x”) , que contém instruções claras e definidas seqüencialmente, escritas de forma que o interpretador Shell possa ler e interpretar.
Antes do Primeiro Script Se você está acessando o sistema como usuário administrador (root), saia e entre como um usuário normal. É muito perigoso estudar shell usando o superusuário, você pode danificar o sistema com um comando errado.
O primeiro Script agente nunca esquece Passos de um Script 1. Escolher o diretório onde colocar o script 2. Escolher um nome para o script 3. Criar o arquivo e colocar nele os comandos 4. Colocar a chamada do shell na primeira linha 5. Tornar o script um arquivo executável
Problemas na execução do Script? O nome do seu Script não foi encontrado no diretório que você se encontra. Isso quer dizer que ou o nome foi digitado errado ou ele não existe naquele diretório. O shell encontrou seu script, mas ele não é executável. Use o comando "chmod +x seu-script" para torná-lo um arquivo executável. Esse dispensa comentários, reveja seus comandos. O interpretador não válida lógica, mas exige que a sintaxe dos comandos esteja 100% correta.
Mãos a Obra! Vamos escrever um script que informe a data, tamanho do espaço em disco, usuários logados, diretório corrente e lista arquivos do diretório. #!/bin/bash date df w pwd ls –l
Melhorando nosso Script #! /bin/sh echo " A data de hoje é: "; date sleep 03 echo " O espaço livre em disco é: "; df sleep 03 echo " Usuários logados: "; w sleep 03 echo " O diretório onde você se encontra é: "; pwd sleep 03 echo “ O conteúdo desse diretório é: “; ls -l
Interagindo com o Usuário Comando READ O comando read permite que uma sequencia de caracteres digitados sejam armazenadas em uma variável. *Variável – Na programação, uma variável é uma entidade (uma posição, frequentemente localizada na memória) capaz de reter e representar um valor ou expressão. Enquanto as variáveis só "existem" em tempo de execução, elas são associadas a "nomes", chamados identificadores, durante o tempo de desenvolvimento.
Variáveis • O Shell permite a criação de variáveis • Às variáveis são atribuídas valores que são cadeias de caracteres • Não existe a definição de tipo de variável • O nomes de variáveis devem obrigatoriamente iniciar com uma letra ou sublinhado podem ser formadas por: • Letras • Números • Sublinhados • Exemplo: um, var, VAR, VAR1, VAR_1, _var. Uma variável é criada no momento que é realizado uma atribuição.
Variáveis • Criação e atribuição de valores • var=”esta é uma string” • var=estaeumastring • var=1 • Um detalhe importante: NÃO PODE EXISTIR ESPAÇOS ENTRE OS ELEMENTOS DA DECLARAÇÃO/ATRIBUIÇÃO • Quando a string atribuída a variável possuir espaços, é necessário a utilização de aspas duplas no início e no final da string. • As variáveis são case-sensitive, isto é, existe diferenças entre maiúsculas e minúsculas. • Exemplo: var, Var, vaR, vAr.
Aplicação do Comando Read #! /bin/bash echo "digite uma variável: " read var1 var2 var3 echo "Primeira variável --> $var1" echo "Segunda variável --> $var2" echo "Terceira variável --> $var3”
Variáveis com Argumentos • São variáveis que são utilizadas para referenciar argumentos passados para um procedimento Shell. Essas variáveis são inicializadas pelo Shell na execução do comando. • As variáveis são: • $# - Número de parâmetros posicionais escritos na linha de comando • $0 – Nome do Script que está sendo executado • $1 .... $9 – Parâmetros posicionais • $* - Lista que contém o conjunto dos argumentos passados para a rotina Shell.
Mãos a Obra! Vamos escrever um script onde serão passados no momento da execução 04 (quatro) parâmetros, que deveram ser exibidos na tela no momento da execução juntamente com o nome do script e o número de argumentos que foram passados. #! /bin/bash echo “Você passou $# parâmetros” echo “O parâmetro zero é o nome da rotina que é $0” echo “O primeiro parâmetro é $1” echo “O segundo parâmetro é $2” echo “A lista de parâmetros é $*”
Controle de Fluxo • Até o momento todos os comandos foram executamos sequencialmente. • O Shell permite a utilização de comandos de controle de fluxo. • Decisão • if • case • Repetição • while • for
Condicional if [ condição ] then se condição for verdadeira execute todos os comandos até o else else se condição não é verdadeira execute todos os comandos até o fi fi ** condição é a comparação entre dois valores ** observar sempre o formato [xcondiçãox], onde x corresponde a um espaço.
Condicional If [ condição ] then se condição é verdadeira execute todos os comandos até elif elif[ condição ] then se condition1 é verdadeiro execute todos os comandos até elif elif[ condição ] then se condition2 é verdadeiro execute todos os comandos até elif else Nenhuma das condições acima são verdadeiras execute todos os comandos até fi fi
Mãos a Obra! Escreva um script onde será fornecido como entrada um nome de um diretório ou arquivo e o script fará uma busca para informar qual a natureza do entrada fornecida. #! /bin/bash echo “ Digite o nome do diretório/arquivo que deseja verificar: ” read entrada if [ -d entrada] then echo “ É um diretório! ” elif [ -f entrada ] then echo “ É um arquivo! ” else echo “ Nenhum diretório ou arquivo foi encontrado com esse nome! ” fi
Decisão com Múltiplas Escolhas case $variável in padrão1) comando comando;; padrão2) comando comando;; padrãoN) comando comando;; *) commando commando;; esac
Decisão com Múltiplas Escolhas #!/bin/bash echo "Menu de Escolha " echo "1 - Inclusão " echo "2 - Consulta" echo "3 - Exclusão" echo "4 - Alteração" echo "5 - Fim" echo "Escolha uma opção -> " read op case $op in 1)echo "Você escolheu a opção Inclusão";; 2)echo “Você escolheu a opção Consulta";; 3)echo “Você escolheu a opção Exclusão";; 4)echo “Você escolheu a opção Alteração";; 5)echo “Você escolheu a opção Fim";; *)echo “Você escolheu uma opção inválida";; esac
Repetição - for #! /bin/bash echo " Digite quantos cadastros deseja realizar: " read qt_cad for ((i=1;i<=qt_cad;i++)) do clear echo " Valor de i= $i" echo " Digite o nome: " read nome echo " Digite a idade: " read idade echo " Digite o sexo: " read sexo done
Repetição - while • #! /bin/bash • echo " Digite quantos cadastros deseja realizar: " • read qt_cad • while [ $qt_cad -gt 0 ] • do • clear • echo " Valor de qt_cad = $qt_cad" • echo " Digite o nome: " • read nome • echo " Digite a idade: " • read idade • echo " Digite o sexo: " • read sexo • qt_cad=$(($qt_cad-1)) • echo "Quantidade restante: $qt_cad" • sleep 01 • done
Fazendo Backup com tar e cp #! /bin/bash op=0 while [ $op -ne 3 ] do echo " Escolha uma das opções abaixo: " echo " [1] - Backup com compressão " echo " [2] - Backup sem compressão " echo " [3] - Sair" read op case $op in 1)echo "Digite o diretório de origem: " read origem echo "Digite o diretório de destino: " read destino tar -zcvf $destino\/backup.tar.gz $origem;; 2)echo "Digite o diretório de origem: " read origem echo "Digite o diretório de destino: " read destino cp -va $origem $destino;; 3)exit;; *)echo " Opção Inválida! " esac done
Redirecionamento de E/S #! /bin/bash echo " Digite quantos cadastros deseja realizar: " read qt_cad for ((i=1;i<=qt_cad;i++)) do clear echo " Valor de i= $i" echo " Digite o nome: " read nome echo " Digite a idade: " read idade echo " Digite o sexo: " read sexo echo " Nome: $nome " >> lista.txt echo " Idade: $idade " >> lista.txt echo " Sexo: $sexo" >> lista.txt echo done