Você está na página 1de 7

Introduo ao Shell Script

Um script um arquivo que contm uma sequencia de comandos e fluxos de execuo tais como condies e laos. Porm, diferente de um programa compilado, um script executado por um interpretador de comandos e no pelo processador da maquina. Diversas linguagens de programao como python e java script so chamadas linguagens interpretadas, pois seus cdigos fontes so scripts. Cada uma dessas linguagens tem um interpretador de comandos prprio. Como qualquer shell um interpretador de comandos, ento eles podem receber um script para executar uma sequencia de comandos. Os scripts usando comandos de um shell so chamados shell scripts. Vamos abordar alguns comandos de controle e como fazer um shell script compativel com os os diversos shell existentes. O primeiro passo criar um arquivo shell script. Isso feito criando um arquivo sem extenso e edita-lo. A primeira linha desse arquivo deve conter o nome do shell usado: #!/bin/bash As prximas linhas so uma sequencia de comandos que sero executadas automaticamente. Vamos fazer um shell script com a seguinte sequencia de comandos: #!/bin/bash # Mostra a data date # Mostra uso de disco df # Mostra usuarios conectados w

A linhas comeando por # um comentrio e no ser executado como comando. Para executar esse arquivo necessrio deixa-lo como executavel. Isso possvel com o comando: chmod +x nome_do_script Se estiver no mesmo diretrio do script faa: ./nome_do_script Seno, coloque o caminho absoluto do arquivo.

Comando echo
Um comando util quando se usa shell script o echo, que serve para imprimir no terminal seus argumentos: $echo ola mundo ola mundo $echo ola mundo ola mundo $echo ola mundo ola mundo Se o parametro -e estiver presente, o caractere barra invertida,\ , seguido por outro caractere ter um significado de formatao. Alguns formatadores so: \a: buzzer de alerta \b: backspace \c: o final da linha sera junto com o prximo comando do terminal \n: nova linha \t: tab. Se no houver o parmetro -e, os formatadores sero impressos como caracteres: $echo ola\nmundo ola\nmundo Se a barra invertida estiver no final da string, ao pressionar ENTER, a escrita da string continuar na prxima linha, como se fosse um texto. $echo ola / novo / mundo! ola novo mundo! Alguns metacaracteres servem como controle de operao. As linhas entre ; sero executadas em sequencia.
echo line 1;echo line 2; echo line 3

line 1 line 2 line 3 A linha seguinte a && s ser executada se a linha anterior retornar 0, ou seja, sucesso.
$ echo line 1&&echo line 2&&echo line 3

line 1 line 2 line 3 A linha seguinte a || s ser executada se a linha anterior retornar diferente de 0, ou seja, falha.
$ echo line 1||echo line 2; echo line 3

line 1 line 3 O comando exit serve para encerrar o shell. Se o comando exit estiver dentro de um parnteses ele ir encerrar o comando, ou lista de comando, dentro do parnteses. Por exemplo:
$ (echo No parenteses; exit 0) && echo OK || echo Termino ruim No parenteses

OK

$ (echo No parenteses; exit 4) && echo OK || echo Termino ruim No parenteses

Termino ruim

Interagindo com usario


Vamos analisar o seguinte shell script: #!/bin/bash echo "Vou buscar os dados do sistema. Posso continuar? [sn] " read RESPOSTA test "$RESPOSTA" = "n" && exit echo "Data e Horrio:" date echo echo "Uso do disco:" df echo echo "Usurios conectados:" w O comando read server para ler uma uma string digitada pelo usuario. Essa string salva em uma variavel cujo nome colocado aps o comando read. Podemos acessar o valor dessa variavel colocando um $ em sua frente.

O comando test serve para testar se uma condiao verdadeira, retornando 0 se verdadeira e no 0 se falsa. Como o comando && s executa o comando seguinte se o anterior for verdadeiro, ento os comando s sero executados se o usuario digiar s. O comando test possui uma srie de parametros que podem ser consultados em man ou help. Como exemplo, o script abaixo testa se a string digitada pelo usuario um arquivo, usando o parametro -f, ou um diretrio, usando o parmetro -d.
#!/bin/bash # sistema - script que testa se usuario digitou # o nome de um diretrio ou arquivo # Autor: Matheus echo "Testa-arquivos" echo "Digite o arquivo: " read ARQUIVO test -d "$ARQUIVO" && echo "$ARQUIVO um diretrio" && exit test -f "$ARQUIVO" && echo "$ARQUIVO um arquivo" && exit echo "$ARQUIVO no existe"

O shell script pode tambm receber parametros. Dentro do script, algumas variveis especiais so definidas automaticamente, em especial, "$1" contm o primeiro argumento recebido na linha de comando, "$2" o segundo, e assim por diante. Veja o script "argumentos": #!/bin/sh # argumentos - mostra o valor das variveis especiais echo "O nome deste script : $0" echo "Recebidos $# argumentos: $*" echo "O primeiro argumento recebido foi: $1" echo "O segundo argumento recebido foi: $2" Ele serve para demonstrar o contedo de algumas variveis especiais, acompanhe: $./argumentos um dois trs O nome deste script : ./argumentos Recebidos 3 argumentos: um dois trs O primeiro argumento recebido foi: um O segundo argumento recebido foi: dois

Expresses aritmticas
O shell tambm sabe fazer contas. A construo usada para indicar uma expresso aritmtica "$((...))", com dois parnteses. $echo $((2*3)) 6 $echo $((2*3-2/2+3)) 8 $NUM=44 $echo $((NUM*2)) 8

$NUM=$((NUM+1)) $echo $NUM 45

If, for e while


Assim como qualquer outra linguagem de programao, o shell tambm tem estruturas para se fazer condicionais e loop. As mais usadas so if, for e while. O comando if: if COMANDO then comandos else comandos fi O if testa um comando e no uma condio. Porm como j conhecemos qual o comando do shell que testa condies, s us-lo em conjunto com o if. Por exemplo, para saber se uma varivel maior ou menor do que 10 e mostrar uma mensagem na tela informando: if test "$VARIAVEL" -gt 10 then echo " maior que 10" else echo " menor que 10" fi H um atalho para o test , que o comando [. Ambos so exatamente o mesmo comando: if [ "$VARIAVEL" -gt 10 ] then echo " maior que 10" else echo " menor que 10" fi Se usar o [, tambm preciso fech-lo com o ], e sempre devem ter espaos ao redor. recomendado evitar esta sintaxe para diminuir suas chances de erro. J o while um lao que executado enquanto um comando retorna VERDADEIRO. while COMANDO do comandos done

Novamente o test bom de ser usado. Por exemplo, para segurar o processamento do script enquanto um arquivo de lock no removido: while test -f /tmp/lock do echo "Script travado..." sleep 1 done E por fim, o for percorre uma lista de palavras, pegando uma por vez: for VAR in LISTA do comandos done Exemplo: for numero in um dois trs quatro cinco do echo "Contando: $numero" done Uma ferramenta muito til para usar com o for o seq, que gera uma seqncia numrica. Para fazer o loop andar 10 passos, pode-se fazer: for passo in $(seq 10) O mesmo pode ser feito com o while, usando um contador: i=0 while test $i -le 10 do i=$((i+1)) echo "Contando: $i" done E temos ainda o loop infinito, com condicional de sada usando o "break : while : do if test -f /tmp/lock then echo "Aguardando liberao do lock..." sleep 1 else break fi done

O bash possui vrios outros comandos para shell script que podem ser pesquisados na internet.

Você também pode gostar