Programação I
Scripts e funções
André Grégio, Fabiano Silva, Luiz Albini e Marcos Castilho
DInf UFPR, Curitiba PR
21 de julho de 2020
1/10
Objetivos
Apresentar o conceito de scripts em shell
Apresentar o conceito de funções em shell
2/10
Scripts e Funções
Um script é um arquivo ASCII contendo comandos da shell
que pode ser executado provocando a execução dos
comandos que ele contém, em suma, é um programa
escrito em shell
Uma função é um subprograma que é armazenado em
memória e pode ser invocado posteriomente por uma shell
ou por outra função
3/10
Exemplo de script
ci1001@fradim:~/tmp$ cat exemplo
mkdir temp
chmod 700 temp
ci1001@fradim:~/tmp$ ls -l exemplo
-rw-r--r-- 1 ci1001 especial 36 Ago 1 16:37 exemplo
ci1001@fradim:~/tmp$
Ao executar o script assim: source exemplo será
executado o comando mkdir temp seguido do comando
chmod 700 temp
4/10
Colocando permissão de execução
chmod u+x exemplo
seta permissão de execução para o arquivo
ci1001@fradim:~/tmp$ ls -l exemplo
-rwxr--r-- 1 ci1001 especial 36 Ago 1 16:37 exemplo
Agora podemos digitar: ./exemplo, que os comandos
mkdir e chmod serão executados em uma subshell
5/10
Hashbang ou Shebang
ci1001@fradim:~/tmp$ cat exemplo
#!/bin/bash
mkdir temp
chmod 700 temp
ci1001@fradim:~/tmp$ ls -l exemplo
Se quisermos garantir que o script seja executado em bash
O hashbang especifica em qual interpretador os comandos
serão executados, por exemplo, um script em zsh teriam a
primeira linha assim:
#!/bin/zsh, mas os comandos teriam que ser escritos na
sintaxe do zsh
6/10
Funções
Seu uso é fundamental, assim como funções e procedures
em Pascal
Além disso, ficam residentes em memória
Existem duas maneiras de serem declaradas
Para remover uma função, usar unset -f
Funções não rodam em processos separados
7/10
Declarando função, modo 1
function cria_diretorio_temp
{
mkdir temp
chmod 700 temp
}
8/10
Declarando função, modo 2
cria_diretorio_temp ()
{
mkdir temp
chmod 700 temp
}
9/10
Licença
Slides feitos em LATEX usando beamer
Licença
Creative Commons Atribuição-Uso Não-Comercial-
Vedada a Criação de Obras Derivadas 2.5 Brasil
[Link]://[Link]/licenses/
by-nc-nd/2.5/br/
Creative Commons Atribuição-Uso Não-Comercial-
Vedada a Criação de Obras Derivadas 2.5 Brasil
[Link]://[Link]/licenses/
by-nc-nd/2.5/br/
10/10