Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Termino ruim
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
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.