Shell Script - Rafael Silva Guimarães

Transcrição

Shell Script - Rafael Silva Guimarães
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!

- 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 mais

Introdução ao Shell Script

Introduçã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 mais

Um passeio pelo Shell Script

Um 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 mais

Shell Script do zero

Shell Script do zero interpretador de comandos. Com ele podemos automatizar muitas tarefas no Linux criando grandes facilidades.

Leia mais

Clique aqui para fazer o da apostila - Dicas-L

Clique aqui para fazer o da apostila - Dicas-L 3.1.2. Korn Shell (ksh).............................................................................................................3 3.1.3. Boune Again Shell (bash)...................................

Leia mais