SlideShare une entreprise Scribd logo
1  sur  23
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                           Shell Script
                        
                            O que é shell?
                            
                                É uma ligação entre o usuário e o kernel.
                                                 Usuário
Prof. Tarcísio Franco




                                                  Shell


                                                 Kernel


                                                  HD
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                          Shell Script
                        
                            O que é script?
                              –   É um arquivo que guarda vários
                                  comandos e pode ser executado sempre
                                  que preciso
Prof. Tarcísio Franco




                              –   Bom para automatizar tarefas repetitivas

                              –   Comandos de um script são exatamente
                                  os mesmos que se digita no prompt
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                            Shell Script
                        O que é um programa?
                        Principais diferenças entre scripts e programa

                                          Script             Programa
Prof. Tarcísio Franco




                                   Codificação         Codificação cautelosa
                                   descuidada
                                   Código feio e sem   Código limpo
                                   estrutura
                                   Pouca manutenção,   Evolução constante
                                   descartável
                                   Feito por um usuário Feito por um ou mais
                                                        programadores
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                         Shell Script
                        •   Criando um Script.
                             –   A primeira linha do script(arquivo) deverá
                                 ser: #!/bin/bash
Prof. Tarcísio Franco




                             –   O arquivo tem que ser executável:
                        chmod +x script.sh ; ./script.sh
                        EX.: De vez em quando é necessário saber
                           das horas, uso do disco e quem está
                           conectado a máquina. Criar um script
                           que junte tudo isso.
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                           Shell Script
                        •   Variáveis: basta usar o sinal “=”
                        $ VARIAVEL=”sim”
                              –   Para obter o conteúdo da variável usá-se:
Prof. Tarcísio Franco




                        $ echo $VARIAVEL
                        OBS: unset apaga a variavel
                        Pode-se inserir a saída de um comando em
                           uma variável:
                            $ HOJE=$(date) ; echo “Hoje é: $HOJE”
                        Expressões aritméticas: $((...))
                        Echo $((2*3)) ; NUM=2 ; NUM=echo $((NUM+2))
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                         Shell Script
                        •   Argumentos: dados via linha de
                            comando
                             –   $0 : nome do script
                             –   $1,$2... : primeiro, segundo...
Prof. Tarcísio Franco




                                 Argumentos
                             –   $* : todos argumentos
                        Comandos:
                        •   read: faz a leitura que o usuario digitou
                            e guarda em uma variável.
                        $ read RESPOSTA
                        $ echo $RESPOSTA
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                        Shell Script
                        •   Test: consegue fazer vários tipos de
                            testes em números, textos e arquivos.
                        $ test $VARIAVEL = “sim” && echo “cont...”
                        obs: && - só executa o segundo comando caso o
Prof. Tarcísio Franco




                           primeiro tenha sido OK. O operador inverso é
                           o ||
                        Outra maneira é:
                        $ [ $VARIAVEL = “sim” ] && echo “cont...”
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                      Shell Script
                        Testes em variáveis
                              OPÇÃO                     DESCRIÇÃO
                        -lt           Número é menor que (LessThan)
                        -gt           Número é maior que (GreaterThan)
Prof. Tarcísio Franco




                        -le           Número é menor igual (LessEqual)
                        -ge           Número é maior igual m(GreaterEqual)
                        -eq           Número é igual (EQual)
                        -ne           Número é diferente (NotEqual)

                        =              String é igual
                        !=             String é diferente
                        -n             String é não nula
                        -z             String é nula
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                          Shell Script
                        •   Testes em arquivos
                                Opção         Descrição
                                -d            É um diretório
                                -f            É um arquivo
Prof. Tarcísio Franco




                                -r            O arquivo tem permissão
                                              de leitura
                                -s            O tamanho do arquivo é
                                              maior que zero
                                -w             Oarquivo tem permissao
                                              de escrita
                                -nt           O arquivo é mais recente
                                              (NewerThan)
                                -ot           O arquivo é mais
                                              antigo(OlderThan)
                                        -ef      O arquivo é o
                                                mesmo(EqualFile)
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                          Shell Script
                        • if: diferentes de outras linguagens, o if testa um
                          comando e não uma condição.
                        if COMANDO
                        then
                           COMANDOS
Prof. Tarcísio Franco




                        else
                            COMANDOS
                        fi
                        Ex.: saber se uma variável é maior ou menor do que 10
                        if test $VAR –gt 10
                        then
                           echo “É maior que 10”
                        else
                           echo “É menor que 10”
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                       Shell Script
                        Também pode-se fazer por um atalho para
                          ficar mais parecido com o formato
                          tradicional.
Prof. Tarcísio Franco




                        Ex.: saber se uma variável é maior ou menor do
                          que 10
                        if [ “$VAR” –gt 10 ]
                        then
                           echo “É maior que 10”
                        else
                           echo “É menor que 10”
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                           Shell Script
                        • for: percorre uma lista de palavras,
                          pegando uma por vez.
                        for VAR in LISTA
                        do
Prof. Tarcísio Franco




                          COMANDOS
                        done

                        Ex.:
                        for numero in um dois tres quatro cinco
                        do
                          echo “Contando: $numero”
                        done
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                         Shell Script
                        • while: é um laço que é executado
                          enquanto um comando retorna OK.
                        while COMANDOS
                        do
Prof. Tarcísio Franco




                          comandos
                        done

                        Ex.:
                        while test $numero –le 10
                        do
                          numero=$((numero+1))
                          echo “Contando: $numero”
                        done
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                           Shell Script
                        •      Case: evita o aninhamento de if's
                        case VARIAVEL in
                        opcao)
Prof. Tarcísio Franco




                        …
                        ;;
                        opcao 1|opcao 2)
                        …
                        ;;
                        esac
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                            Shell Script
                        •   Case:
                        Ex.:
                        case $op in
Prof. Tarcísio Franco




                               -h|--help)
                               echo "$op"
                               ;;
                               -v)
                               echo "$op"
                               ;;
                        esac
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                             Shell script
                        1) Mostrar todos os usuários que estão no
                          arquivo /etc/passwd com seus nomes completos
                          (campos 1 e 5)
                        2) Recebe dois números como parâmetros e
Prof. Tarcísio Franco




                          mostra qual a relação entre eles
                        Ex.: $relacao.sh 3 5
                        3 é menor que 5
                        3) Recebe um número como parâmetro e o
                          diminui até chegar a zero, mostrando na tela
                          cada passo.
                        Ex.: $zerador.sh 5
                        543210
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                                 Shell script
                        1)
                        #!/bin/bash
                        cat /etc/passwd | cut –d : -f 1,5
                        2)
Prof. Tarcísio Franco




                        #!/bin/bash
                        If test $1 –eq $2 then
                            Echo “$1 é igual $2”
                        elif test $1 –lt $2 then
                            Echo “$1 é menor que $2”
                        Else
                        Echo “$1 é maior que $2”
                        fi
                        3)
                        #!/bin/bash
                        i=$1
                        While test –ge 0 do
                            echo –n “$i”
                            i=$((i-1))
                        Done
                        Echo
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                              Shell Script
                        
                            Controle de qualidada, deixando o código
                            mais amigável:
                            
                                Cabeçalho inicial
Prof. Tarcísio Franco




                            
                                Código alinhado
                            
                                Comentários
                            
                                Nomes descritivos
                            
                                Controle de alterações de versões
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                         Shell Script
                        
                            Cabeçalho Inicial
                              −   Informar do que se trata o programa
                                  para outro programador saber o que
Prof. Tarcísio Franco




                                  faz, e como faz.
                        # Este seria um início de cabeçalho
                        # com mais de uma linha
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                            Shell Script
                        
                             Cabeçalho Inicial (sugestão de um
                            cabeçalho informativo)
                              −   Localização (path) do interpretador.
Prof. Tarcísio Franco




                              −   Nome do programa
                              −   Descrição breve do propósito / site
                              −   Nome autor
                              −   E-mail do autor
                              −   Data criação
                              −   Histórico de mudanças
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                            Shell Script
                        
                            Código alinhado
                        dialog –-title “Título da Caixa” –-msgbox “Esta é a
                          mensagem” 0 0

                            Pode ficar assim:
Prof. Tarcísio Franco




                        -
                        dialog 

                        –-title “Título da Caixa”   
                        –-msgbox “Esta é a mensagem” 
                        00
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                              Shell Script
                        
                            Comentários
                                 −   Comentários de uma linha:
                        # Converter o email para maiúsculo
Prof. Tarcísio Franco




                        echo “$email” | tr a-z A-Z

                            -   Comentários de meia linha:
                                     echo “$email” # Mostra o email na tela
UESPI – Universidade Estadual do Piauí - OPTATIVA I
                                               Shell Script
                         A três tipos de especiais de comentários
                          em todas as linguagens de programação:
Prof. Tarcísio Franco




                        TODO    Indica uma tarefa a ser feita, uma pendência ainda não resolvida.
                                #TODO Colocar este trecho em uma função
                        FIXME   Indica um bug conhecido, que precisa ser arrumado.
                                #FIXME Este loop não funciona com números negativos
                        XXX     Chama a atenção, é um recado ou uma notícia imoprtante.
                                #XXX Tenho que alterar esta função para retornar inteiro

Contenu connexe

Tendances

Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6Fabio Spanhol
 
Curso de Shell Script 04/11
Curso de Shell Script 04/11Curso de Shell Script 04/11
Curso de Shell Script 04/11Rodrigo Silva
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Kratos879
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosFabio Spanhol
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4Fabio Spanhol
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à ShellscriptVinícius Hax
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrenteFabio Duarte
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)Bruno Pedro
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação ISidney Roberto
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Linguagem c-para-microcontroladores
Linguagem c-para-microcontroladoresLinguagem c-para-microcontroladores
Linguagem c-para-microcontroladores34macchia34
 

Tendances (18)

Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 
Curso de Shell Script 04/11
Curso de Shell Script 04/11Curso de Shell Script 04/11
Curso de Shell Script 04/11
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
Pged 01
Pged 01Pged 01
Pged 01
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4
 
Apresentação Linguagem C
Apresentação Linguagem CApresentação Linguagem C
Apresentação Linguagem C
 
Aula 08-oac-execucao-de-programas
Aula 08-oac-execucao-de-programasAula 08-oac-execucao-de-programas
Aula 08-oac-execucao-de-programas
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrente
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Linguagem c-para-microcontroladores
Linguagem c-para-microcontroladoresLinguagem c-para-microcontroladores
Linguagem c-para-microcontroladores
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 

Similaire à Shellscript

Curso de Shell Script 06/11
Curso de Shell Script 06/11Curso de Shell Script 06/11
Curso de Shell Script 06/11Rodrigo Silva
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015Flávia Santos
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shellMarcio Pereira
 
Introdução a Exploração de Software
Introdução a Exploração de SoftwareIntrodução a Exploração de Software
Introdução a Exploração de SoftwareKaique Bonato
 
Atividade programação script 2
Atividade programação script 2Atividade programação script 2
Atividade programação script 2Rtec Informatica
 
Curso de Shell Script 05/11
Curso de Shell Script 05/11Curso de Shell Script 05/11
Curso de Shell Script 05/11Rodrigo Silva
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandosIvan Ribeiro
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell scriptbrunobione
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Pessoal
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)Charles Fortes
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 

Similaire à Shellscript (20)

Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
Curso de Shell Script 06/11
Curso de Shell Script 06/11Curso de Shell Script 06/11
Curso de Shell Script 06/11
 
Shell script i
Shell script iShell script i
Shell script i
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Linux shell
Linux shellLinux shell
Linux shell
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shell
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
 
Introdução a Exploração de Software
Introdução a Exploração de SoftwareIntrodução a Exploração de Software
Introdução a Exploração de Software
 
Atividade programação script 2
Atividade programação script 2Atividade programação script 2
Atividade programação script 2
 
Shell scripts
Shell scriptsShell scripts
Shell scripts
 
Curso de Shell Script 05/11
Curso de Shell Script 05/11Curso de Shell Script 05/11
Curso de Shell Script 05/11
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandos
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 

Plus de tarcisioti

Circuitos Combinacionais Decodificadores
Circuitos Combinacionais DecodificadoresCircuitos Combinacionais Decodificadores
Circuitos Combinacionais Decodificadorestarcisioti
 
Circuitos Aritmeticos
Circuitos AritmeticosCircuitos Aritmeticos
Circuitos Aritmeticostarcisioti
 
Circuitos combinacionais 1_4var
Circuitos combinacionais 1_4varCircuitos combinacionais 1_4var
Circuitos combinacionais 1_4vartarcisioti
 
Circuitos combinacionais 1
Circuitos combinacionais 1Circuitos combinacionais 1
Circuitos combinacionais 1tarcisioti
 
Karnaugh4e5var
Karnaugh4e5varKarnaugh4e5var
Karnaugh4e5vartarcisioti
 
Karnaugh2e3var
Karnaugh2e3varKarnaugh2e3var
Karnaugh2e3vartarcisioti
 
Agenda tarefas
Agenda tarefasAgenda tarefas
Agenda tarefastarcisioti
 
Optativa - Pacotes vi
Optativa - Pacotes viOptativa - Pacotes vi
Optativa - Pacotes vitarcisioti
 
Circuito digitalsimplificacaocircuito
Circuito digitalsimplificacaocircuitoCircuito digitalsimplificacaocircuito
Circuito digitalsimplificacaocircuitotarcisioti
 
Fstab processo
Fstab processoFstab processo
Fstab processotarcisioti
 
CircuitoDigital Exercicio portas logicas01
CircuitoDigital Exercicio portas logicas01CircuitoDigital Exercicio portas logicas01
CircuitoDigital Exercicio portas logicas01tarcisioti
 
P.D - CIRCUITODIGITAL
P.D - CIRCUITODIGITALP.D - CIRCUITODIGITAL
P.D - CIRCUITODIGITALtarcisioti
 
OptativaIAula05
OptativaIAula05OptativaIAula05
OptativaIAula05tarcisioti
 
OptativaIAula03
OptativaIAula03OptativaIAula03
OptativaIAula03tarcisioti
 
OptativaIAula02
OptativaIAula02OptativaIAula02
OptativaIAula02tarcisioti
 
OptativaIAula04
OptativaIAula04OptativaIAula04
OptativaIAula04tarcisioti
 
OptativaIAula01
OptativaIAula01OptativaIAula01
OptativaIAula01tarcisioti
 

Plus de tarcisioti (20)

Circuitos Combinacionais Decodificadores
Circuitos Combinacionais DecodificadoresCircuitos Combinacionais Decodificadores
Circuitos Combinacionais Decodificadores
 
Circuitos Aritmeticos
Circuitos AritmeticosCircuitos Aritmeticos
Circuitos Aritmeticos
 
Samba nfs
Samba nfsSamba nfs
Samba nfs
 
Circuitos combinacionais 1_4var
Circuitos combinacionais 1_4varCircuitos combinacionais 1_4var
Circuitos combinacionais 1_4var
 
Circuitos combinacionais 1
Circuitos combinacionais 1Circuitos combinacionais 1
Circuitos combinacionais 1
 
Ssh
SshSsh
Ssh
 
Adm usuario
Adm usuarioAdm usuario
Adm usuario
 
Karnaugh4e5var
Karnaugh4e5varKarnaugh4e5var
Karnaugh4e5var
 
Karnaugh2e3var
Karnaugh2e3varKarnaugh2e3var
Karnaugh2e3var
 
Agenda tarefas
Agenda tarefasAgenda tarefas
Agenda tarefas
 
Optativa - Pacotes vi
Optativa - Pacotes viOptativa - Pacotes vi
Optativa - Pacotes vi
 
Circuito digitalsimplificacaocircuito
Circuito digitalsimplificacaocircuitoCircuito digitalsimplificacaocircuito
Circuito digitalsimplificacaocircuito
 
Fstab processo
Fstab processoFstab processo
Fstab processo
 
CircuitoDigital Exercicio portas logicas01
CircuitoDigital Exercicio portas logicas01CircuitoDigital Exercicio portas logicas01
CircuitoDigital Exercicio portas logicas01
 
P.D - CIRCUITODIGITAL
P.D - CIRCUITODIGITALP.D - CIRCUITODIGITAL
P.D - CIRCUITODIGITAL
 
OptativaIAula05
OptativaIAula05OptativaIAula05
OptativaIAula05
 
OptativaIAula03
OptativaIAula03OptativaIAula03
OptativaIAula03
 
OptativaIAula02
OptativaIAula02OptativaIAula02
OptativaIAula02
 
OptativaIAula04
OptativaIAula04OptativaIAula04
OptativaIAula04
 
OptativaIAula01
OptativaIAula01OptativaIAula01
OptativaIAula01
 

Shellscript

  • 1. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  O que é shell?  É uma ligação entre o usuário e o kernel. Usuário Prof. Tarcísio Franco Shell Kernel HD
  • 2. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  O que é script? – É um arquivo que guarda vários comandos e pode ser executado sempre que preciso Prof. Tarcísio Franco – Bom para automatizar tarefas repetitivas – Comandos de um script são exatamente os mesmos que se digita no prompt
  • 3. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script O que é um programa? Principais diferenças entre scripts e programa Script Programa Prof. Tarcísio Franco Codificação Codificação cautelosa descuidada Código feio e sem Código limpo estrutura Pouca manutenção, Evolução constante descartável Feito por um usuário Feito por um ou mais programadores
  • 4. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Criando um Script. – A primeira linha do script(arquivo) deverá ser: #!/bin/bash Prof. Tarcísio Franco – O arquivo tem que ser executável: chmod +x script.sh ; ./script.sh EX.: De vez em quando é necessário saber das horas, uso do disco e quem está conectado a máquina. Criar um script que junte tudo isso.
  • 5. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Variáveis: basta usar o sinal “=” $ VARIAVEL=”sim” – Para obter o conteúdo da variável usá-se: Prof. Tarcísio Franco $ echo $VARIAVEL OBS: unset apaga a variavel Pode-se inserir a saída de um comando em uma variável: $ HOJE=$(date) ; echo “Hoje é: $HOJE” Expressões aritméticas: $((...)) Echo $((2*3)) ; NUM=2 ; NUM=echo $((NUM+2))
  • 6. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Argumentos: dados via linha de comando – $0 : nome do script – $1,$2... : primeiro, segundo... Prof. Tarcísio Franco Argumentos – $* : todos argumentos Comandos: • read: faz a leitura que o usuario digitou e guarda em uma variável. $ read RESPOSTA $ echo $RESPOSTA
  • 7. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Test: consegue fazer vários tipos de testes em números, textos e arquivos. $ test $VARIAVEL = “sim” && echo “cont...” obs: && - só executa o segundo comando caso o Prof. Tarcísio Franco primeiro tenha sido OK. O operador inverso é o || Outra maneira é: $ [ $VARIAVEL = “sim” ] && echo “cont...”
  • 8. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script Testes em variáveis OPÇÃO DESCRIÇÃO -lt Número é menor que (LessThan) -gt Número é maior que (GreaterThan) Prof. Tarcísio Franco -le Número é menor igual (LessEqual) -ge Número é maior igual m(GreaterEqual) -eq Número é igual (EQual) -ne Número é diferente (NotEqual) = String é igual != String é diferente -n String é não nula -z String é nula
  • 9. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Testes em arquivos Opção Descrição -d É um diretório -f É um arquivo Prof. Tarcísio Franco -r O arquivo tem permissão de leitura -s O tamanho do arquivo é maior que zero -w Oarquivo tem permissao de escrita -nt O arquivo é mais recente (NewerThan) -ot O arquivo é mais antigo(OlderThan) -ef O arquivo é o mesmo(EqualFile)
  • 10. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • if: diferentes de outras linguagens, o if testa um comando e não uma condição. if COMANDO then COMANDOS Prof. Tarcísio Franco else COMANDOS fi Ex.: saber se uma variável é maior ou menor do que 10 if test $VAR –gt 10 then echo “É maior que 10” else echo “É menor que 10”
  • 11. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script Também pode-se fazer por um atalho para ficar mais parecido com o formato tradicional. Prof. Tarcísio Franco Ex.: saber se uma variável é maior ou menor do que 10 if [ “$VAR” –gt 10 ] then echo “É maior que 10” else echo “É menor que 10”
  • 12. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • for: percorre uma lista de palavras, pegando uma por vez. for VAR in LISTA do Prof. Tarcísio Franco COMANDOS done Ex.: for numero in um dois tres quatro cinco do echo “Contando: $numero” done
  • 13. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • while: é um laço que é executado enquanto um comando retorna OK. while COMANDOS do Prof. Tarcísio Franco comandos done Ex.: while test $numero –le 10 do numero=$((numero+1)) echo “Contando: $numero” done
  • 14. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Case: evita o aninhamento de if's case VARIAVEL in opcao) Prof. Tarcísio Franco … ;; opcao 1|opcao 2) … ;; esac
  • 15. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script • Case: Ex.: case $op in Prof. Tarcísio Franco -h|--help) echo "$op" ;; -v) echo "$op" ;; esac
  • 16. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell script 1) Mostrar todos os usuários que estão no arquivo /etc/passwd com seus nomes completos (campos 1 e 5) 2) Recebe dois números como parâmetros e Prof. Tarcísio Franco mostra qual a relação entre eles Ex.: $relacao.sh 3 5 3 é menor que 5 3) Recebe um número como parâmetro e o diminui até chegar a zero, mostrando na tela cada passo. Ex.: $zerador.sh 5 543210
  • 17. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell script 1) #!/bin/bash cat /etc/passwd | cut –d : -f 1,5 2) Prof. Tarcísio Franco #!/bin/bash If test $1 –eq $2 then Echo “$1 é igual $2” elif test $1 –lt $2 then Echo “$1 é menor que $2” Else Echo “$1 é maior que $2” fi 3) #!/bin/bash i=$1 While test –ge 0 do echo –n “$i” i=$((i-1)) Done Echo
  • 18. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  Controle de qualidada, deixando o código mais amigável:  Cabeçalho inicial Prof. Tarcísio Franco  Código alinhado  Comentários  Nomes descritivos  Controle de alterações de versões
  • 19. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  Cabeçalho Inicial − Informar do que se trata o programa para outro programador saber o que Prof. Tarcísio Franco faz, e como faz. # Este seria um início de cabeçalho # com mais de uma linha
  • 20. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  Cabeçalho Inicial (sugestão de um cabeçalho informativo) − Localização (path) do interpretador. Prof. Tarcísio Franco − Nome do programa − Descrição breve do propósito / site − Nome autor − E-mail do autor − Data criação − Histórico de mudanças
  • 21. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  Código alinhado dialog –-title “Título da Caixa” –-msgbox “Esta é a mensagem” 0 0 Pode ficar assim: Prof. Tarcísio Franco - dialog –-title “Título da Caixa” –-msgbox “Esta é a mensagem” 00
  • 22. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script  Comentários − Comentários de uma linha: # Converter o email para maiúsculo Prof. Tarcísio Franco echo “$email” | tr a-z A-Z - Comentários de meia linha: echo “$email” # Mostra o email na tela
  • 23. UESPI – Universidade Estadual do Piauí - OPTATIVA I Shell Script A três tipos de especiais de comentários em todas as linguagens de programação: Prof. Tarcísio Franco TODO Indica uma tarefa a ser feita, uma pendência ainda não resolvida. #TODO Colocar este trecho em uma função FIXME Indica um bug conhecido, que precisa ser arrumado. #FIXME Este loop não funciona com números negativos XXX Chama a atenção, é um recado ou uma notícia imoprtante. #XXX Tenho que alterar esta função para retornar inteiro