Shell Script - Rafael Silva Guimarães
Transcrição
Shell Script Rafael Silva Guimarães O que é Shell O Shell é o "prompt" da linha de comando do Linux, que recebe os comandos digitados pelo usuário e os executa. Mas o Shell é muito mais poderoso que seu primo distante. Além dos comandos básicos para navegar entre diretórios e manipular arquivos, ele também possui todas as estruturas de uma linguagem de programação, como IF, FOR, WHILE, variáveis e funções. Com isso, também é possível usar o Shell para fazer Scripts e automatizar tarefas. Shell Script Um script é um arquivo que guarda vários comandos e pode ser executado sempre que preciso. Os comandos de um script são exatamente os mesmos que se digita no prompt, é tudo Shell. Script em inglês significa roteiro. Para criar um script deve-se criar um arquivo texto com diversos comandos. Estes comandos serão executados em ordem. Exatamente como num roteiro. Tipos de Shell ● Ksh - Korn Shell (David G. Korn at AT&T Bell Labs) ● Bsh – Bouner Shell (Steve Bourne 7ª versão do UNIX Bell Labs) ● Csh – C like shell ● Bash - GNU Bourne-Again SHell Shell Script Escolher o diretório onde colocar o script, para que o script possa ser executado de qualquer parte do sistema, mova−o para um diretório que esteja no seu PATH. #echo $PATH Para criar o arquivo e colocar nele os comandos use o VI ou VIM ou outro editor de textos de sua preferência para colocar todos os comandos dentro do arquivo. Shell Script Colocar a chamada do Shell na primeira linha na primeira linha do script deve ser: #!/bin/bash Para que ao ser executado, o sistema saiba que é o Shell quem irá interpretar estes comandos. Tornar o script o arquivo um executável, use o comando para que seu script seja reconhecido pelo sistema como um comando executável. #chmod +x <nome do arquivo> Parâmetros de Entrada Os argumentos da linha de comando são passados para o shell através da variável local $argv. Os campos individuais dessa variável podem ser acessados como em uma variável local qualquer. Além disso, uma série de atalhos é definida para facilitar o acesso a esses parâmetros: $0 : o nome do script $n : o n-ésimo argumento da linha de comando $* : todos os argumentos da linha de comando $# : número de argumentos $? : status do último comando executado (status <> 0 indica erro) $$ : número de processo (PID) do shell que executa o script Testando Parâmetros de Entrada “Começando a nerdisse” #!/bin/bash #exemplo de parâmetros de entrada echo "Nome do script : $0" echo "Primeiro parâmetro : $1" echo "Todos os parâmetros : $*" echo "Numero de parametros : $#" echo "Numero deste processo : $$" exit 0 Nerd Começando a Brincadeira Fazer um script chamado "sistema" e colocar estes comandos nele. O conteúdo do arquivo "sistema" seria o seguinte: #!/bin/bash date df -h w Cuidado! Shell é tão legal que vicia! Shell Script Executar os três comandos seguidos resulta em um bolo de texto na tela, misturando as informações e dificultando o entendimento. É preciso trabalhar um pouco a saída do script, tornando−a mais legível. Para usar o echo, basta colocar entre "aspas". Se nenhum texto for colocado, uma linha em branco é mostrada. #!/bin/bash echo "Data e Horário:" date echo echo "Uso do disco:" df echo echo "Usuários conectados:" w Shell Script Para o script ficar mais completo, vamos colocar uma interação mínima com o usuário, pedindo uma confirmação antes de executar os comandos. #!/bin/bash echo "Vou buscar os dados do sistema. Posso continuar? [sn] " read RESPOSTA test "$RESPOSTA" = "n" && exit echo "Data e Horário:" date echo echo "Uso do disco:" df echo echo "Usuários conectados:" w Exemplos: Fazer um script chamado “calc_idade.sh" e colocar estes comandos nele. O conteúdo do arquivo “calc_idade.sh" seria o seguinte: #!/bin/bash echo "Script para calcular a idade" echo "Entre com o seu ano de nascimento: " read RESP IDADE=$(($(date +%Y)-$RESP)) echo "Sua idade e $IDADE anos" Exemplos: Fazer um script chamado “system.sh" #!/bin/bash clear echo "Hello, $USER" echo echo "Hoje e `date`, estamos na semana `date +"%V"`." echo echo "Usuarios conectados atualmente:" w | cut -d " " -f 1 - | grep -v USER | sort -u echo echo "Este um sistemas operacional `uname -s`" echo echo "Tempo de uptime" uptime Comandos test O canivete suíço dos comandos do shell é o "test", que consegue fazer vários tipos de testes em números, textos e arquivos. Ele possui várias opções para indicar que tipo de teste será feito. Comandos teste Comparações entre números -eq : igual a -ne : diferente de -gt : maior que -ge : maior ou igual a -lt : menor que -le : menor ou igual a -a : AND binário (bit a bit) -o : OR binário (bit a bit) Associações entre condições && : AND lógico || : OR lógico Comparações entre strings usando [] = : igual a != : diferente de -z : string de tamanho zero Conceitos Avançados Assim como os comandos do sistema que possuem e opções e parâmetros, os scripts também podem ser preparados para receber dados via linha de comando. • Dentro do script, algumas variáveis especiais são definidas automaticamente, em especial, "$1" contém o primeiro argumento recebido na linha de comando, "$2" o segundo, e assim por diante. Exemplo 1: Operador if if comando 1 then ... elif comando 2 then ... else ... fi Exemplo 2: Echo “ Digite um numero” read VAR if [ $VAR -ge 10 ] && [ $VAR -le 20 ]; then echo “Seu número esta entre 10 e 20!" else echo "$VAR" fi echo "Compara dois numeros" echo "Escreva primeiro numero:" read n1 echo "Escreva segundo numero:" read n2 if [ $n1 -eq $n2 ]; then echo "$n1 == $n2" else echo "$n1 >< $n2" fi Operador for for VAR in LISTA; do comandos done Desafio: Crie um shell script para criar pasta com nome DIRXX, onde XX varia de 01 a 99. Dica: use o operador for com comando printf para gerar o nome das pastas a criar. Exemplos for: for i in $(seq 1 10); do echo $i; done for ((i=1;i<11;i++)); do echo $i; done Operador while while CONDIÇÃO; do ....comandos... done Exemplos while: i=1 while [ $i -le 100 ]; do echo "$i" i=$((i+1)) done Desafio: Escreva um shell script que execute uma contagem até um numero informado pelo usuario e vai informando esse numero na tela. Operador case O comando case é um pouco difícil de se usar. Também um pouco difícil de se acostumar. Ele compara uma variável passada e vai comparando com cada valor listado. A sintaxe é assim: case <variável> in <algo_para_comparar>1) <comando>1 ; <comando>2 ;; <algo_para_comparar>2) <comando>3 ; <comando>4 ;; <algo_para_comparar>n) <comando>n ; <comando>n+1 ;; *) echo "Você tem de entrar com um parâmetro válido" ;; esac Desafio: Crie um menu com 4 opções onde a ultima opção é sair. Menu while : ; do echo -n " -------------Administrar usuarios-------------------1 - teste1 2 - teste2 3 - Sair ------------Escolha uma das opcao:" read opcao case "$opcao" in 1)echo "teste1";; Exemplo case: 2)echo "teste2";; 3)exit;; case $1 in esac "list") echo "Listar!";; done "ni!") echo "Ni!";; *) echo "Não conheço $1";; esac Exemplo PráDco Criar um software em bash com os seguintes itens: - - - - - - - Cadastrar Usuário. Deletar Usuário. Exibir Usuários. Adicionar Grupo. Deletar Grupo. Adicionar Usuário ao Grupo. Listar Usuários do Grupo.
Documentos relacionados
- Você Faz o Design, Nós Executamos!
só podem ser acedidas a partir da própria classe, ou seja, a informação é escondida dentro da classe. Se estivesse declarada como public podia ser acedida a partir de uma classe externa. Pode-se ob...
Leia maisIntrodução ao Shell Script
Ali está o shell, esperando ansiosamente por algum comando para ele poder executar. Essa é a sua função: esperar e executar. Cada comando digitado é lido, verificado, interpretado e enviado ao sist...
Leia maisUm passeio pelo Shell Script
Como testar? Mais testes Testes de arquivo/diretório -d é um diretório -e o arquivo existe -f é um arquivo normal -G o grupo do arquivo é o do usuário atual -L o arquivo/diretório é um link simból...
Leia maisShell Script do zero
interpretador de comandos. Com ele podemos automatizar muitas tarefas no Linux criando grandes facilidades.
Leia maisClique aqui para fazer o da apostila - Dicas-L
3.1.2. Korn Shell (ksh).............................................................................................................3 3.1.3. Boune Again Shell (bash)...................................
Leia mais