Apresentação2 Shellscript PDF
Apresentação2 Shellscript PDF
UNIX – LINUX
PROGRAMAÇÃO SHELL
Sérgio Hitomi
Curso Técnico de Informática
ETE SÃO PAULO
GSO-II
2º.Semestre/2006
1
SHELL SCRIPT
INTRODUÇÃO
¾ O ponto forte dos shell scripts é poderem fazer uso dos vários
utilitários existentes no sistema, que combinados podem gerar
tarefas mais complexas.
Estes utilitários vão desde a busca (localizar) por strings em
arquivos (grep), procura por arquivos no sistema (find,
whereis), até comandos de uso comum, como ls, cp, mv, rm,
entre outros.
Os shell scripts fazem forte utilização da própria capacidade do
shell em combinar utilitários, como os conceitos de
redirecionamento (< e >), pipes ( | ), etc. 5
SHELL SCRIPT
INTRODUÇÃO
$ for arquivo in *
> do
> if grep –l TEXTO $arquivo
> then
> more $arquivo
> fi
> done
arquivo1.txt
Esta eh uma linha contendo a palavra TEXTO. Bom proveito! 7
$
SHELL SCRIPT
Neste caso, o comando for … do não termina enquanto a
palavra done não for encontrada, indicando o fim do
comando for … do.
Observe também que o comando if … then é terminado
com a palavra fi. O exemplo teria ficado mais claro se
identação fosse utilizada:
$ for arquivo in *
> do
> if grep –l TEXTO $arquivo
> then
> more $arquivo
> fi
> done
arquivo1.txt
Esta eh uma linha contendo a palavra TEXTO. Bom
proveito!
8
$
SHELL SCRIPT
Vale notar que o comando for é acompanhado de um do. Entretanto
são comandos separados, e por isso vêm em linhas diferentes.
Para tornar mais legível ainda nosso programa, podemos colocar os
dois comandos na mesma linha, separados por ponto-e-vírgula, da
mesma forma como faríamos no shell para executarmos dois comandos
em seqüência.
O mesmo fazemos com o if … then:
$ for arquivo in * ; do
> if grep –l TEXTO $arquivo ; then
> more $arquivo
> fi
> done
arquivo1.txt
Esta eh uma linha contendo a palavra TEXTO. Bom proveito!
$
9
SHELL SCRIPT
Explicando o exemplo:
ou ...
11
SHELL SCRIPT
Neste exemplo, o comando more irá mostrar na tela o conteúdo do
arquivo cujo nome será o resultado do comando grep –l TEXTO *.
Observe que existem duas formas: ou o comando a ser executado deve
ser delimitado por crase, ou ser envolvido por $( … ).
#!/bin/sh
# primeiro.sh
# Este arquivo eh um script que procura por todos os arquivos contendo a
# palavra TEXTO no diretorio atual, e entao imprime estes arquivo em
# stdout
for arquivo in *; do
if grep –q TEXTO $arquivo; then
more $arquivo
fi
done
exit 0
Uma vez salvo o arquivo como nome primeiro.sh, precisamos torná-lo executável:
$ chmod +x primeiro.sh 13
SHELL SCRIPT
Duas grandes observações:
$ primeiro.sh
bash: primeiro.sh: command not found
$ ./primeiro.sh
Esta eh uma linha contendo a palavra TEXTO. Bom proveito!
# palavra TEXTO no diretório atual, e então imprime estes arquivo em
$ echo $saudacao
Ola mundo
$ saudacao=7+5 Æ valores numéricos são considerados
strings
$ echo $saudacao
18
7+5
SHELL SCRIPT
Outra forma de atribuir valor a uma variável é utilizando o
comando read. Este comando lê caracteres do teclado até
que a tecla ENTER seja pressionada:
$ read var
Estou digitando isso
$ echo $var
Estou digitando isso
Uma terceira maneira de atribuir valores a variáveis é
utilizando a crase ou $( … ), como vimos nos exemplos
anteriores:
$ var=$(ls –l arquivo1.txt)
$ echo $var
-rwxrwxr-x 1 celso celso 10147 May 31 01:32 arquivo1.txt
$ var=”Oi galera”
$ echo $var
Oi galera
$ echo ”$var”
Oi galera
$ echo ’$var’
$var
$ echo dolar=\$, aspa=\”, apostrofo=\’
dolar=$, aspa=”, apostrofo=’
$ echo ’dolar=\$, aspa=\”, apostrofo=\’\’
dolar=\$, aspa=\”, apostrofo=\’
$ var2=”var=$var”
$ echo $var2
var=Oi galera
$ var2=’var=$var’
$ echo $var2
var=$var
Deste exemplo concluímos que usando aspa ( “ ) o shell expande nomes de variáveis
dentro
da string para seu valor correspondente, enquanto utilizando apóstrofo ( ‘ ), o shell trata
todo o texto
literalmente como foi digitado. Ao criar scripts, a melhor recomendação é sempre testar
antes como o shell reage aos vários caracteres especiais dentro de uma string
delimitando-os ou não por aspas ou apóstrofos. 20
SHELL SCRIPT
Variáveis de Ambiente e de Parâmetros do Script
Quando shell script inicia, algumas variáveis herdadas do shell pai são herdadas.
normalmente, as variáveis utilizadas pelo shell são todas em letras maiúsculas,
para caracterizar variáveis de ambiente. As variáveis utilizadas pelos scripts em
geral são em letras minúsculas, para diferenciá-las das variáveis definidas pelo
próprio shell. Principais variáveis de ambiente:
Quando shell script inicia, algumas variáveis herdadas do shell pai são
herdadas. Normalmente, as variáveis utilizadas pelo shell são todas em
letras maiúsculas, para caracterizar variáveis de ambiente. As variáveis
utilizadas pelos scripts em geral são em letras minúsculas, para diferenciá-
las das variáveis definidas pelo próprio shell.
Principais variáveis de ambiente:
22
SHELL SCRIPT
ÎQuando o shell script é invocado, algumas variáveis
indicam informações úteis sobre seu nome, os parâmetros
que lhe foram passados, e o número do processo que o
criou:
case variavel in
padrao [ | padrão ] ...) comandos;;
padrao [ | padrão ] ...) comandos;;
esac 31
SHELL SCRIPT
3 - Estruturas de Controle
Vejamos um exemplo:
#!/bin/sh
echo ”Agora jah eh noite? Responda sim ou nao”
read noite
case ”$noite” in
”sim” | ”Sim” | ”SIM”) echo ”Boa noite!”;;
”nao” | ”Nao” | ”NAO”) echo ”Eh hora de trabalhar!”;;
”sei la” ) echo ”Olhe pela janela, por favor.”;;
* ) echo ”Acho que voce nao entendeu a pergunta”;;
esac
exit 0
Preparando e executando o script temos:
$ chmod +x testa-noite.sh
$ ./testa-noite
Agora jah eh noite? Responda sim ou nao
de tarde
32
Acho que voce nao entendeu a pergunta
SHELL SCRIPT
4 - Obtendo Ajuda
Muitas outras características estão presentes no shell. Muitas vezes o
programador fica amarrado aos próprios utilitários, que são
importantes para a construção de scripts funcionais.
Para ajudar na sintaxe dos comandos, o shell possui um comando de
ajuda interno. Este comando, chamado help, dá a lista de comandos
disponíveis, ou a correta sintaxe de um comando específico solicitado.
help [ comando ]