shell script professor: joão paulo baseado no material de everson scherrer borges

24
Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Shell ScriptProfessor: João Paulo

Baseado no material de Everson Scherrer Borges

Page 2: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

O que é Shell

O Shell é o "prompt" da linha de comando do Linux, que recebe os comandos digitados pelo usuário e os executa, da mesma forma que o Prompt do MS-DOS tem esta função em sistemas Microsoft Windows.

Mas o Shell é muito mais poderoso que seu primo distante. Além dos comandos básicos para navegar entre diretórios e manipular arquivos, ele também possui todas as estruturas de uma linguagem de programação, como IF, FOR, WHILE, variáveis e funções. Com isso, também é possível usar o Shell para fazer Scripts e automatizar tarefas.

Page 3: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Shell ScriptUm script é um arquivo que guarda vários comandos e pode ser executado sempre que preciso. Os comandos de um script são exatamente os mesmos que se digita no prompt, ou seja, são comandos que poderiam ser digitados diretamente no terminal e seriam executados.

Script em inglês significa roteiro. Para criar um script deve-se criar um arquivo textocom diversos comandos. Estes comandos serão executados em ordem. Exatamente como num roteiro.

Page 4: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Shell Script• A primeira linha do script, se inicia com uma sequência de caracteres “#!” e indica o interpretador a ser utilizado. Se o arquivo é executável pelo usuário, o shell invoca o comando passando como parâmetro o próprio arquivo do script. • Assim, shell scripts devem indicar em sua primeira linha, o interpretador apropriado:

#!/bin/bashecho Hello World

Para executar o script, altere suas permissões com o comando chmod. Se o arquivo se chama hello.sh, por exemplo, execute-o com:chmod 777 hello.sh

Page 5: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Tipos de Shell

● Após isto, para executar o script, é só digitar ./nome_do_script, pois para execução de scripts é

necessário colocar o caminho absoluto para o script.

Ksh - Korn Shell (David G. Korn at AT&T Bell Labs)● Bsh – Bouner Shell (Steve Bourne 7ª versão do UNIX Bell Labs)● Csh – C like shell● Bash - GNU Bourne-Again SHell

Page 6: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Shell Script

• Variáveis em shell script podem ter nomes compostos por letras maiúsculas ou minúsculas, algarismos e o símbolo _.

• o nome de uma variável sempre deve ser iniciado por uma letra.

• As variáveis não precisam ser declaradas como em uma linguagem de programação compilada, é só usá-las e atribuir dados à elas, que podem ser strings, caracteres ou números.

Page 7: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Variáveis Incorporadas

As variáveis incorporadas são variáveis especiais fornecidas pelo Linux, que podem ser usadas para se obter

informações importantes dentro do script. Abaixo, temos alguns exemplos de variáveis incorporadas usadas como

parâmetros:

$0 : o nome do script$n : o n-ésimo argumento da linha de comando$* : todos os argumentos da linha de comando$# : número de argumentos$? : status do último comando executado (status <> 0 indica erro)$$ : número de processo (PID) do shell que executa o script

Page 8: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Testando Variáveis Incorporadas

#!/bin/bash #exemplo de parâmetros de entrada echo "Nome do script : $0" echo "Primeiro parâmetro : $1" echo "Todos os parâmetros : $*" echo "Numero de parametros : $#" echo "Numero deste processo : $$"

Page 9: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Começando a Brincadeira

Fazer um script chamado "sistema" e colocar estes comandos nele. O conteúdo do arquivo "sistema" seria o seguinte:

#!/bin/bashdatedf -hw

Page 10: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Shell ScriptExecutar os três comandos seguidos resulta em um bolo de texto na tela, misturando as informações e dificultando o entendimento. É preciso trabalhar um pouco a saída do script, tornando−a mais legível.Para usar o echo, basta colocar entre "aspas". O uso do echo sem aspas, fará com que ele ignore espaços em branco antes e depois da string referenciada. Se nenhum texto for colocado após o comando echo, o comando terá como resultado o aparecimento de uma linha em branco.#!/bin/bashecho "Data e Horário:"dateechoecho "Uso do disco:"dfechoecho "Usuários conectados:"w

Page 11: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Comandos para scripts interativos

O comando read recebe a próxima linha da entrada (que pode ser a entrada padrão ou qualquer outra definida pelo usuário) e a atribui a uma variável. O exemplo abaixo mostra um exemplo de um script interativo, onde a informação é passada através do uso do read.

#!/bin/bashecho "Digite seu nome:" read nome echo "Olá $nome como vai?"

Page 12: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Comandos para scripts interativosexprO comando expr trabalha com expressões matemáticas simples e somente números inteiros. Permite, também, manipulação de strings, mas com recursos limitados. Exemplos de operações matemáticas com expr podem ser vistos abaixo:[prompt]$ expr 3+43+4[prompt]$ expr 3 + 4 7[prompt]$ expr 5 - 23[prompt]$ expr 10 / 52[prompt]$ expr 2 * 3expr: erro de sintaxe[prompt]$ expr 2 \* 36

Exemplo:#!/bin/bashecho “Entre com um número:”read num1echo “Entre com outro número:”read num2echo “O resultado da soma foi: “expr $num1 + $num2

Page 13: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Comandos para scripts interativosPara se fazer a comparação em Bash, utiliza-se o comando test. A sua sintaxe é aceita de duas formas, com mostrado no comando abaixo. A segunda forma é mais recente e mais fácil de se entender. Mas, atenção para o fato de que é necessário haver um espaço em branco após o primeiro colchete ([) e um espaço em branco antes do último colchete(]),

test expressão # Formato comum.

[ expressão ] # Formato recente.

[ s1 == s2 ] # Retorna verdadeiro se a string s1 for igual a string s2[ s1 != s2 ] # Retorna verdadeiro se a string s1 for diferente da string s2.

Page 14: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Operadores numéricosOs operadores >, <, >= e <= para efetuarem o efeito esperado com números, deverão fazer parte de expressões que estejam entre parênteses duplos. Se estiverem dentro de colchetes simples ou colchetes duplos, usarão ordem alfabética.

Page 15: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Estrutura de Controle IFA instrução if avalia uma expressão lógica para tomar uma decisão, e possui o formato apresentado abaixo. Para concluir a estrutura if usa-se o if escrito ao contrário: fi

if comando 1 then

... else comando 2

... fi

#!/bin/bashecho "Compara dois numeros"echo "Escreva o primeiro numero:"read n1echo "Escreva o segundo numero:"read n2if [ $n1 == $n2 ] then echo “Os números são iguais"else echo “Os números são diferentes"fi

Page 16: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Exemplos

#!/bin/bashecho “Entre com um número:”read numif (( $num > 10 ))thenecho "Você digitou um número maior que 10."elseecho "Você digitou o número $num."fi

Page 17: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Estrutura de Controle Case• A estrutura case permite selecionar uma entre várias opções de ação, baseando-se num valor de uma variável. Deve ser usada no lugar da declaração if quando esta tiver um grande número de condições. O exemplo no próximo slide mostra um exemplo de uso do case.• Essa estrutura pode ser usada para executar declarações que dependem de um valor isolado ou de uma faixa de valores. Se nenhum valor for encontrado, há a opção de executar o valor padrão “*”. • A variável definida logo após a instrução case tem que casar com alguma das opções em seguida. Se nenhuma opção for escolhida, a opção padrão será executada.

Page 18: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Estrutura Case#!/bin/bashecho “Qual sua resposta?”read opcaocase $opcao insim ) echo "Você concordou!" ;;nao ) echo "Que pena!" ;;* ) echo "Nem sim, nem não";;esac

Deve-se observar que as instruções terminam com um duplo ponto-e-vírgula “;;”. Se não for assim, a instrução seguinte será executada junto. Este duplo ponto-e-vírgula pode ser colocado depois da instrução ou na linha seguinte. Para encerrar a estrutura case usa-se esac, que é case escrito ao contrário.

Page 19: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Estrutura de repetição While

A estrutura while pode ser usada para executar uma série de instruções enquanto uma condição especificada for “verdadeira”. O loop termina quando a condição especificada se tornar “falsa” e for verificada.

#!/bin/bashi=1while (( $i < 10 ))doecho "$i"i=‘expr $i + 1‘done

Page 20: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Estrutura de Repetição ForA estrutura for permite a repetição de um bloco de comandos dentro de um número pré-programado de repetições. Em shell script, sua sintaxe é semelhante à linguagem C.

#!/bin/bashfor (( i=1; $i < 10; i++))doecho "$i"done

Page 21: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

FunçõesDa mesma forma que em outras linguagens, Bash também aceita funções. Uma função é um pedaço de programa que executa um certo conjunto de instruções que pode ser usado mais de uma vez. Um função tem o formato abaixo:Os parênteses informam ao Bash que uma função está sendo especificada, a as instruções que serão executadas ficam entre chaves ({}). Pode-se observar que pelo menos um espaço em branco deve ser colocado entre as instruções e as chaves de início e fim. Quando a função é chamada no corpo do script, ela executará todas as instruções que foram colocadas entre as chaves.nome_funcao (){instrução 1instrução 2instrução 3...}

Page 22: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

FunçõesNo Bash, as funções devem ser declaradas antes de seu uso, porque ele interpreta as linhas do script seqüencialmente, do início ao fim. Bash não compila o script antes de sua execução, portanto não teria como saber de antemão o significado daquela função.

#!/bin/bashsaudacao () # Declaração da função saudacao().{echo “entre com seu nome:”read nomeecho “Boa noite $nome!"}saudacao

Page 23: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Operadores Lógicos

Os operadores mostrados abaixo são usados para comparar expressões usando as regras da lógica.

E - &&

OU - ||

NÃO - !

Estes operadores permite combinar duas ou mais condições para que sejam testadas em conjunto. No próximo slide existe um exemplo de uso de scripts com operadores lógicos.

Page 24: Shell Script Professor: João Paulo Baseado no material de Everson Scherrer Borges

Operadores Lógicos #!/bin/bashecho “Qual sua resposta?”read opcaoIf [ $opcao == sim ] || [ $opcao == Sim ] then echo “Você concordou!”else If [ $opcao == não ] || [ $opcao == nao ] || [ $opcao == Não ] || [ $opcao == Nao ] then echo “Que pena!” else echo “Nem sim, nem não!” fifi