Programação para Servidores Cassio Diego contato@cassiodiego.com 1
Unidade 2 2. PROGRAMAÇÃO SCRIPT 2.1. Variáveis 2.2. Testes 2.3. Operadores 2.4. Loops e desvios 2
Programação script VARIÁVEIS É um local na memória do computador no qual você pode armazenar um valor e a partir do qual você posteriormente pode recuperá-lo. 3
Prática no laboratório CRIANDO E TESTANDO SCRIPTS + 4
Debian GNU/Linux 8 Debian tty1 debian login: student password:!a123456789
student@debian: $ su - password:!a123456789 root@debian: # nano script4.sh
#!/bin/sh nome="cassio Diego" echo "Meu nome é: $nome"
root@debian: # chmod a+x script4.sh root@debian: #./script4.sh
Atribuindo saídas de comandos a variáveis 9
root@debian: # nano script5.sh
#!/bin/sh dados_pc=$(cat /proc/cpuinfo) echo "$dados_pc"
root@debian: # chmod a+x script5.sh root@debian: #./script5.sh
root@debian: # nano script6.sh
#!/bin/sh espaco_disco=`df -h` echo "$espaco_disco"
root@debian: # chmod a+x script6.sh root@debian: #./script6.sh
Capturando entrada de dados dos usuários 16
root@debian: # nano script7.sh
#!/bin/sh echo "Qual ano você nasceu?" read ano; echo "Você nasceu em: $ano"
root@debian: # chmod a+x script7.sh root@debian: #./script7.sh
Exercício PRÁTICA NO LABORATÓRIO 1. Escreva um script para calcular a idade baseado no ano de nascimento que o usuário digitar. 2. Escreva um script para criar um arquivo baseado no caminho que o usuário digitar. 20
#!/bin/sh #Resposta: 1 echo "Digite o ano de nascimento:" read nascimento; ano=`date "+%Y"` idade=$(($ano-$nascimento)) echo "Idade: $idade"
#!/bin/sh #Resposta: 2 echo "Digite o nome do arquivo:" read arquivo; echo "Digite o caminho do arquivo:" read arquivo; touch $caminho$arquivo echo "Arquivo criado com sucesso"
Operadores OPERADORES PARA NÚMEROS OPERADOR -lt -gt -le -ge -eq -ne DESCRIÇÃO Verifica se é menor Verifica se é maior Verifica se é menor ou igual Verifica se é maior ou igual Verifica se é igual Verifica se é diferente 23
Operadores OPERADORES PARA TEXTO OPERADOR DESCRIÇÃO -n Verifica se não é nula -z Verifica se é nula!= Verifica se é diferente = Verifica se é igual 24
Operadores OPERADOR PARA LÓGICA OPERADOR DESCRIÇÃO! Lógica NOT ou NÃO -o Lógica OU, (OR) ou -a Lógica E, (AND) ou && 25
Operadores OPERADOR PARA ARQUIVOS/DIRETÓRIOS OPERADOR DESCRIÇÃO -d Verifica se é diretório -f Verifica se é arquivo -e Verifica se existe -O Verifica se o dono do arquivo é o usuário que esta executando -s Verifica se o arquivo não esta vazio -L Verifica se é um link simbólico -r Verifica se o usuário tem permissão de leitura -w Verifica se o usuário tem permissão de gravação -x Verifica se o usuário tem permissão de execução -nt Verifica se é mais recente -ot Verifica se é mais antigo -ef Verifica se é igual 26
Estrutura de controle 27
if [ CONDICAO ]; then # SE SATISFAZ ENTRA AQUI else # SE NAO SATISFAZ ENTRA AQUI fi
if [ CONDICAO ]; then # SE SATISFAZ ENTRA AQUI elif [ OUTRA CONDICAO ]; then # SE SATISFAZ ENTRA AQUI else # SE NAO SATISFAZ ENTRA AQUI fi
#!/bin/sh #Exemplo: Desvios com if/else echo "Digite sua nota do semestre:" read nota if [ $nota -ge 6 ]; then echo "Aprovado!" else echo "Reprovado!" fi
#!/bin/sh #Exemplo: Desvios com if/else parametro=$1 if [ -d $parametro ] then echo "Uma pasta foi informada" elif [ -f $parametro ] then echo "Um arquivo foi informado" else echo "Apenas um texto" fi
Estrutura de repetição 32
for [ condição ]; do #Seu codigo done
#!/bin/sh #Exemplo: Loops for (1) echo "Contando de 1 até 5:" for i in 1 2 3 4 5; do echo $i; done
#!/bin/sh #Exemplo: Loops com for (2) echo "Contando até 10" for i in $(seq 10); do echo $i; done
#!/bin/sh #Exemplo: Loops com for (3) echo "Contando até 5" for ((i=0; i<=5; i++)); do echo "Executando $i"; done
while [ condição ]; do #Seu codigo done
#!/bin/sh #Exemplo: Loops com while (1) variável="teste" while [ "$variavel" = "teste" ]; do echo "Testando while done
#!/bin/sh #Exemplo: Loops com while (2) conatdor=0 while true; do if [ $contador -gt 10 ]; then break fi echo "Valor: $contador" #Incrementando contador (( contador ++ )) done
until [ condição ]; do #Seu codigo done
#!/bin/sh #Exemplo: Loops com until resposta="sim" contador=0 until [ "$resposta" = "nao" ]; do (( contador++ )) echo "Loop: $contador" #if [ $contador -eq 5] if [ $contador -ge 5 ] then resposta="nao" fi sleep 1 done
Prática no laboratório CRIANDO SCRIPTS COM LOOPS E DESVIOS + 42
Links úteis GUIA DE COMANDOS GNU/Linux https://www.linux.ime.usp.br/~lucasmmg/livecd/ documentacao/documentos/terminal/ Terminal_basico.html http://www.uniriotec.br/~morganna/guia/ index_guia.html http://www.comandoslinux.com/ 43
Unidade 3 3. COMANDOS 3.1. Comandos internos 3.2. Comandos externos 3.3. Substituição de comandos 44