shell script parte 2. funções assim como em qualquer "linguagem de programação" o...

16
Shell Script PARTE 2

Upload: rayssa-silveira-pinheiro

Post on 07-Apr-2016

229 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Shell ScriptPARTE 2

Page 2: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções.

Sintaxe:

nome_funcao (){funcao_2;;}

nome_funcao_2 (){acao}nome_funcao

Page 3: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Funções Onde:

nome_funcao – Funcão criada.

acao – Ação a ser tomada.

nome_funcao_2;; - Chamada da função nome_funcao_2.

nome_funcao – Função que dará inico ao shell script.

Será criado um shell script para no qual é possível escolher se será feito uma tabuada do 2 ou do 3 sendo que cada uma é feita por uma função.

Page 4: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Funções #!/bin/bash principal() {

escolha=-1 while [ $escolha -ne 0 ]; do

echo "Escolha uma opção" echo "1- Fazer tabuada do 2"; echo "2- Fazer tabuada do 3"; echo "0- Sair"; echo -n ":"; read escolha; if [ "$escolha" -eq "1" ]; then gerarTabuada2 elif [ "$escolha" -eq "2" ]; then gerarTabuada3 fi done

}

Page 5: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Funções gerarTabuada3() {

for i in {1..10}; do echo "$i*3="$i*3 done } gerarTabuada2() { for i in {1..10}; do echo "$i*2="$i*2 done } principal

Page 6: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

PASSANDO ARGUMENTOS PARA AS FUNÇÕES

Como, depois de declaradas, podemos usar as funções assim como usamos os comandos, também podemos passar argumentos para funções, assim como fazemos com os comandos.

Os argumentos são armazenados da mesma forma que os parâmetros, quando usamos comandos. Ou seja, o nome do script é armazenado na variável '$0', o 1º argumento fica na variável '$1', o 2º na '$2', ... O número total de argumentos na '$#' e todos são armazenados na '$@'.

Page 7: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

PASSANDO ARGUMENTOS PARA AS FUNÇÕES

#!/bin/sh

args(){ echo "Nome: $0" echo "Total: $#" echo "Primeiro: $1" echo "Segundo: $2" echo "Terceiro: $3" echo echo "Todos: $@" echo}

args arg1 arg2 arg3

Page 8: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

CÓDIGOS DE RETORNO (RETURN CODES)

Como vimos, todo e qualquer comando do Unix retorna algum código. '0' caso tenha dado tudo certo e outro número para mostrar que houve um erro, onde números diferentes são usados para indicar erros diferentes.

O bash armazena o código de retorno do último comando na variável '$?'.

Por exemplo, digite no terminal: $ comando_inexistente$ echo $?

Que exibirá o erro, pro caso do comando não existir.

Agora, teste um comando que funcione bem:

$ ls$ echo $?

Page 9: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

RETURN Como estes códigos de saída são amplamente usados no *Unix, é uma boa prática fazer o mesmo em seus scripts. Usa-se o comando return [|inteiro], ao invés de exit [|inteiro]nas funções de seu script, pois queremos somente que a função termine, não o script, e retornando um inteiro para o script, fazendo uma comunicação deste com a função.

Se não usarmos um return em uma função, o '$?' armazenará o código de retorno do último comando da função.

Podemos escrever só 'return' sem retornarmos explicitamente um número. Quando a função encontra 'return' ela termina imediatamente (não executa o que vem em seguida) e '$?' armazenará o código de retorno do último comando antes de encontrar da função chegar em 'return'.

Ou retornamos algo específico de nosso propósito. Dentro de condicionais, por exemplo:

Page 10: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

RETURN if(tudo certo) return 2112else return 666

Page 11: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

VARIÁVEIS GLOBAIS * Aqui vai uma pequena e importante ressalva, para você que já vem de outra linguagem de programação:

Por padrão, as variáveis em Shell são globais. Se desejar ter uma variável local em suas funções, as declare como 'local'. Exemplo:

local VAR='Existem variáveis locais!

Sem isso, as variáveis que você cria dentro das função estarão disponíveis por todo o script, ou caso já existam serão sobrescritas. Portanto, cuidado, dê nomes únicos para as suas variáveis ou adicione o local na frente.

Page 12: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Variáveis em vetores O shell permite o uso de variáveis em forma de array. Ou seja, vários valores podem ser guardados em uma variável seguindo a ordem de uma indexação. Assim como não é necessário declarar o tipo de variável no início do programa, também não é preciso declarar que uma variável será usada como vetor

Um array é criado automaticamente se for atribuído um valor em uma variável da seguinte forma: nomevar[indice]=valor, onde índice é um número maior ou igual a zero. Exemplo: camada[0]=Física

camada[1]=Enlace

camada[2]=Redes

Page 13: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Variáveis em vetores Outra forma de se atribuir valores em array é:

nomevar=(valor1, valor2, ..., valorn).

Page 14: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Variáveis do sistema Existem algumas variáveis que são próprias do sistema e outras que são inicializadas diretamente pelo shell. Algumas dessas variáveis, denominadas variáveis do shell são explicadas abaixo:

◦ HOME - Contém o diretório home do usuário. ◦ LOGNAME - Contém o nome do usuário atual. ◦ IFS - Contém o separador de campos ou argumento (Internal Field Separator ). Geralmente, o IFS é um

espaço, tab, ou nova linha. Mas é possível mudar para outro tipo de separador. ◦ PATH - Armazena uma lista de diretórios onde o shell procurará pelo comando digitado. ◦ PWD - Contém o diretório corrente.

Page 15: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Variáveis do sistema ◦ PS1 - Esta é denominada Primary Prompting String.

◦ Ou seja, ela é a string que está no prompt que vemos no shell. Geralmente a string utilizada é: • \s O nome do shell. • \u Nome do usuário que está usando o shell. • \h O hostname • \w Contém o nome do diretório corrente desde a raiz. • \d Mostra a data no formato: dia_da_semana mês dia. • \nnn Mostra o caracter correspondente em números na base octal. • \t Mostra a hora atual no formato de 24 horas, HH:MM:SS. • \T Mostra a hora atual no formato de 12 horas, HH:MM:SS

Page 16: Shell Script PARTE 2. Funções Assim como em qualquer "linguagem de programação" o shell script proporciona a utilização de funções. Sintaxe: nome_funcao

Variáveis do sistema PS2 - Esta é denominada Secondary Prompting String. Ela armazena a string do prompt secundário. O padrão usado é o caracter >. Mas pode ser mudado para os caracteres mostrados acima.

MAIL - É o nome do arquivo onde ficam guardados os e-mails.

COLUMNS - Contém o número de colunas da tela do terminal.

LINES - Contém o número de linhas da tela do terminal.