Iº Workshop Linux da Unijorge
Shell Script
Tópicos a serem abordados: 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/shprompt
Linux
Linguagem Interpretada
echo
datedfw
pwd read
$1 if then
tarX=$((1+2+3))
man
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
cp /home
tar -czpf
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 é Shell?
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 Script1. Escolher o diretório onde colocar 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
2. Escolher um nome para o script
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 é: "; datesleep 03
echo " O espaço livre em disco é: "; dfsleep 03
echo " Usuários logados: "; wsleep 03
echo " O diretório onde você se encontra é: "; pwdsleep 03
echo “ O conteúdo desse diretório é: “; ls -l
Interagindo com o Usuário
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.
Comando READ
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 valoresvar=”esta é uma string”var=estaeumastringvar=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.
Variáveis
#! /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”
Aplicação do Comando Read
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.
Variáveis com Argumentos
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 é $*”
Até o momento todos os comandos foram executamos sequencialmente.O Shell permite a utilização de comandos de controle de fluxo.
Decisão ifcase
Repetiçãowhile for
Controle de Fluxo
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
CondicionalIf [ 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
Operadores de Comparação Numéricos
-eq Igual
-ne Diferente
-le Menor igual
-lt Menor que
-ge Maior igual
-gt Maior que
Operadores de Comparação AlfaNuméricos
= Igual
!= Diferente
-z String sem Conteúdo
-n String com Conteúdo
#! /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
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.
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
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_cadfor ((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=0while [ $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 opcase $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! "
esacdone
#! /bin/bash
echo " Digite quantos cadastros deseja realizar: "read qt_cadfor ((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
Redirecionamento de E/S