Sie sind auf Seite 1von 50

10/11/13

Shell Script Profissional

Shell Script Profissi


Classic
Incio

pesquisar

26th August

A diferena entra metacaracteres e coringas do Shell Metacaractere uma ferramenta que para pesquisa. Os caracteres coringa so aqueles utilizados na linha de comando e nas opes de comando o case (definio do autor do livro).

[http://2.bp.blogspot.com/rmZ7F3gWpeI/UhvBaowa4RI/AAAAAAAAA7Y/ncL1Qyh6wrw/s1600/graf.jpg]

shellscriptprofissional.blogspot.com.br

1/50

10/11/13

Shell Script Profissional

Reportar problem as

[http://4.bp.blogspot.com/_Jfbs3Dsy3A/UhvC8ui0gDI/AAAAAAAAA7k/tl4pqQ2MNcg/s1600/graf1.jpg]

grep grep grep grep

root /etc/passwd Ressalta a palavra "root" em toda o texto. ^root /etc/passwd Ressalta a palavra "root" no ncio de cada linha. bash$ /etc/passwd Procura por "bash" ao final de cada linha. '^$' /etc/passwd Procura por uma linha vazia.

POESIA: O que uma linha em branco seno um comeo de linha seguido de um fim de linha? grep 'user' /etc/passwd Procura por todos os usurio "user" do sistema. grep '[lL]inus' /etc/passwd Procura por todos os usurios, perdo, Deuses do sistema, chamados Linus, com letra maiscula e minscula. grep '^[aeiou]' /etc/passwd Procura por todas a linhas iniciadas por vogais. Procura por todas as linhas iniciadas

grep '^[bcdfghjklmnpqrstvxz]' /etc/passwd em consoante. grep '[0-9]' /etc/passwd

Pocura por nmeros entre 0 e 9 no texto. Procura por qualquer caractere seguido de vogal

grep '^.[aeiou]' /etc/passwd no incio de cada linha.

grep '^..........................$' /etc/passwd caracteres. Ou: grep '^.\{26\}$' /etc/passwd grep -E '^.{26}$' /etc/passwd egrep '^.{20,40}$' /etc/passwd egrep '^.{40,}$' /etc/passwd um intervalo aberto. egrep '[0-9]{3,}' /etc/passwd mais caracteres.
shellscriptprofissional.blogspot.com.br

Procura por linhas com exatamente 26

Procura por linhas de 20 a 40 caracteres. Procura por linhas de 40 caracteres ou mais,

Procurar por nmeros entre 0 e 9 com 3 ou

2/50

10/11/13

Shell Script Profissional

egrep '[0-9]{3,}' /etc/passwd | cut -d : -f 1 Procura por nmeros entre 0 e 9, a partir de 3 caracteres e redirecionan a sada para o comando cut que vai mostrar o que tem no primeiro campo at os dois pontos. egrep '^[aeiou].*bash$' /etc/passwd terminadas em "bash". egrep '^(user1|user2|user3):' /etc/passwd "user1" ou "user2" ou "user3". Traz linhas iniciadas por vogal e

Procura por linhas iniciadas por

* O que h de errado nos grficos? Piadinha interna. ; )

Postado h 26th August por bferreira_user


0

Add a comment

26th August

#!/bin/bash # caixa.sh # verso 2.0 | Pois foi modificado por mim para melhor funcionamento # Encaixota um texto qualquer vindo da STDIN # # Usando caracteres de controle, primeiro desenha uma caixa: # # # # # +------------------+ | | | |

+------------------+

shellscriptprofissional.blogspot.com.br

3/50

10/11/13

Shell Script Profissional

# # Depois coloca o texto recebido via STDIN dentro dessa caixa: # # # # # # A separao do cdigo em dois passos permite personalizar # separadamente a caixa e o texto, podendo-se facilmente # adicionar cores ou fazer outras formataes. # # Configurao do usurio caixa_largura=60 caixa_coluna_inicio=10 caixa_linha_inicio=10 texto_max_linhas=20 distancia_borda_texto=1 caixa_cor='33;1' texto_cor='32' #caixa_cor='33;43' # descomente essa linha para uma surpresa! #----------------------------------------------------------------------------------+-----------------------+ | | O texto recebido | |

+-----------------------+

texto="Hoje eu estou de FOLGA e no vou trabalhar!"

# Daqui para baixo no mexa ### Configurao Dinmica caixa_largura=$(echo "$texto" | wc -L) # remendo feito por mim caixa_coluna_fim=$(( caixa_coluna_inicio+caixa_largura-1)) texto_coluna_inicio=$((caixa_coluna_inicio+distancia_borda_texto+1)) texto_largura=$(( caixa_largura-distancia_borda_texto)) texto=$texto #$($texto fmt -sw $texto_largura) num_linhas=$( echo "$texto" | wc -l)
shellscriptprofissional.blogspot.com.br 4/50

10/11/13

Shell Script Profissional

total_linhas=$((

num_linhas+2))

# texto + bordas horizontais

### Checagem do tamanho do texto if [ $num_linhas -gt $texto_max_linhas ]; then echo "Texto muito extenso, no vai caber na tela" exit 1 fi ### Compe a linha horizontal da caixa # $caixa_largura-2 porque os "cantos" sero feitos com o + for i in $(seq $((caixa_largura-2))); do linha_caixa="$linha_caixa-" done ### Limpa a tela echo -ne '\033c'

### Desenha a caixa echo -ne "\033[$caixa_linha_inicio;0H" # pula para a linha inicial echo -ne "\033[${caixa_cor}m" # liga a cor da caixa for i in $(seq $total_linhas); do # para cada linha... echo -ne "\033[${caixa_coluna_inicio}G" # vai p/coluna inicial if [ $i -eq 1 -o $i -eq $total_linhas ]; then # 1a ou ltima linha echo +$linha_caixa+ # borda horizontal else # seno echo -e "|\033[${caixa_coluna_fim}G|" # bordas verticais fi done echo -e '\033[m'

# desliga as cores

### Coloca o texto dentro da caixa echo -ne "\033[$((caixa_linha_inicio+1));0H" # pula p/a linha inicial echo -ne "\033[${texto_cor}m" # liga a cor do texto echo "$texto" | while read LINHA; do # para cada linha... echo -e "\033[${texto_coluna_inicio}G$LINHA" # posiciona e mostra done echo -e '\033[m' echo

Postado h 26th August por bferreira_user


shellscriptprofissional.blogspot.com.br 5/50

10/11/13

Shell Script Profissional

Add a comment

25th August

#!/bin/bash # gauge.sh # Barra de usando caracteres de controle # # [................................................] 0% # [########################........................] 50% # [################################################] 100% # # # Aurlio Marinho Jargas - Shell Script Profissional, pg. 124 # # Compre o livro. muito bom! ; ) # # Script alterado de para a correta exibio no Terminal # # barra vazia ## o -n serve para no quebrar a linha no final

echo -n '[.................................................] ' passo='#####' for i in 10 20 30 40 50 60 70 80 90 100; do sleep 1 pos=$((i/2-5)) # calcula a posio atual da barra echo -ne '\033[G' # vai para o comeo da linha echo -ne "\033[${pos}C" # vai para a posio atual da barra echo -n "$passo" # preenche mais um passo echo -ne '\033[53G' # vai para a posio da porcentagem echo -n "$i%" # mostra a porcentagem done echo

Postado h 25th August por bferreira_user


shellscriptprofissional.blogspot.com.br 6/50

10/11/13

Shell Script Profissional

Add a comment

25th August

Bem amigos, j faz um bom tempo que eu no publico neste blog. Mas j no era sem tempo! Vou dar continuidade aos posts, mesmo que paulatinamente, s para deixar o autor com raiva. Eu nem me lembrava, mas me fugiram alguns scripts e comandos, bobagem: echo -e '\033[31m MENSAGEM IMPORTANTE!!! \033[m' echo -e \033 [31m \033[m o -e o escape, ele interpreta os escapes especiais; o ESC, o escape; deixa o texto com a cor vermelha; o final do comando, para que s este texto fique em vermelho.

echo -e '\033[31;1m MENSAGEM IMPORTANTE!!! \033[m'

Neste exemplo, apenas acrescentamos o 1 que serve para ativar a cor brilhante, nada mais.

Comandos de Movimentao do Cursor ESC[nA ESC[nB ESC[nC ESC[nD ESC[nE ESC[nF ESC[nG ESC[n;mH Move o cursor n linhas para cima, na mesma coluna. Move o cursor n linhas para baixo, na mesma coluna. Move o cursor n colunas para a direita, na mesma linha. Move o cursor n colunas para a esquerda, na mesma linha. Move o cursor n linhas para baixo, na coluna 1. Move o cursor n linhas para cima, na coluna 1. Move o cursor para a coluna n da linha atual. Move o cursor para a coluna m da linha n.

Lembrando que ESC o \033.

echo -e '\033c\033[HH\033[4;7H.C\033[3DD\033[AA\033[GF\nG\nE\033[7GB' echo -e \033c


shellscriptprofissional.blogspot.com.br

o -e o escape, ele interpreta os escapes especiais; serve para limpar a tela, equivale ao ESC[2J;
7/50

10/11/13

Shell Script Profissional

\033[HH coloca a letra "H" no canto superior esquerda da tela; \033[4;7H. coloca o "." na linha 4 e coluna 7; C coloca o C aps o ponto, no um comando, a letra "C" mesmo; \033[3DD coloca a letra "D" na coluna 3 esquerda na mesma linha; \033[AA coloca a letra "A" um ponto acima na mesma coluna; \033[GF sobe um ponto na coluna 1 e coloca um "G" l; \nG\nE o \n desce linhas e coloca as letras "G" e "E" l; \033[7GB pula para a coluna 7 (7G o comando) e coloca a letra "B".

Postado h 25th August por bferreira_user


0

Add a comment

11th January

#!/bin/bash # como o mestre gostava: # # # # echo imprime o texto na tela do terminal -e faz o terminal interpretar o cdigo \033[m o Esc octal Bruna Ferreira o meu nome :)

# executei isso num terminal de fundo preto e texto cinza brilhante (branco bold) echo -e '\n'Opes de texto:'\n' echo -e '\033[0mTexto normal sem cores\033[m' echo -e '\033[1mCor brilhante\033[m' echo -e '\033[30mTexto preto ou cinza (cinza com ;1)\033[m' echo -e '\033[31mTexto vermelho\033[m'

shellscriptprofissional.blogspot.com.br

8/50

10/11/13

Shell Script Profissional

echo -e '\033[32mBruna Ferreira\033[m' echo -e '\033[33mTexto marrom ou amarelo (amarelo com ;1)\033[m' echo -e '\033[34mTexto azul\033[m' echo -e '\033[35mTexto roxo\033[m' echo -e '\033[036mTexto ciano\033[m' echo -e '\033[37mTexto cinza ou branco (branco com ;1)\033[m' echo -e '\n\033[35;1m***** Shell Script *****\033[m' echo -e '\n'Opes de fundo:'\n' echo -e '\033[5mO texto pisca (ou deveria)\033[m' echo -e '\033[7mVideo inverso (invertido)\033[m' echo -e '\033[40mFundo preto ou cinza\033[m' echo -e '\033[41mFundo vermelho\033[m' echo -e '\033[42mFundo verde\033[m' echo -e '\033[43mFundo marrom ou amarelo\033[m' echo -e '\033[44mFundo azul\033[m' echo -e '\033[45mFundo roxo\033[m' echo -e '\033[46mFundo ciano\033[m' echo -e '\033[47mFundo cinza ou branco\033[m'

Postado h 11th January por bferreira_user


0

Add a comment

11th November 2012

shellscriptprofissional.blogspot.com.br

9/50

10/11/13

Shell Script Profissional

#!/bin/bash # DEBUG CATEGORIZADO # debug-categorizado.sh # Exemplo de Debug categorizado em trs nveis

# Se eu estiver errada, me corrijam: bferreiraunderlineuser@gmail.com

DEBUG=${1:-0}

# passe o nvel pelo $1

# Lembrando que $1 a posio na linha de comando, # temos ./debug-categorizado.sh ($0) 1 ($1)

Debug(){ [ $1 -le $DEBUG ] && echo "--- DEBUG $*" # -le significa menor ou igual } Debug 1 "Incio do Programa" i=0 max=5 echo "Contando at $max" Debug 2 "Vou entrar no WHILE" while [ $i -ne $max ]; do Debug 3 "Valor de \$i antes de incrementar: $i" let i=$i+1 Debug 3 "Valor de \$i depois de incrementar: $i" echo "$i..." done

Debug 2 "Sai do WHILE" echo 'Terminei!' Debug 1 "Fim do Programa"

shellscriptprofissional.blogspot.com.br

10/50

10/11/13

Shell Script Profissional

# PARA VER SE FUNCIONA, EXECUTE 'bash debug-categorizado.sh n' # ONDE n PODE SER UM NMERO (DE DEBUG) DE 1 3 # Detalhe: eu no vou perder meu tempo explicando muito esses cdigos de depurao, # eles s servem de exemplo para testar os scripts e detectar erros. # D para se virar com os echos da vida. # Para novos alunos das aulas de Sistemas Operacionais o qu interessa mesmo # mexer com o sistema. # Ser que eu ainda me aventuro pelas faculdades? Vou esperar pra ver no qu d.

Postado h 11th November 2012 por bferreira_user


0

Add a comment

11th November 2012

#!/bin/bash # DEBUG PERSONALIZADO # grita.sh # Mostra uma palavra ($TXT) em maisculas e com exclamaes # Exemplo: foo -> !!!!!FOO!!!!! # Aqui o nosso salvador, Aurlio Marinho, usa uma funo Debug() # para depurar o cdigo (emitir mensgens de erro em caso de erro). DEBUG=1 # depurao: 0 desliga, 1 liga

# Funo de depurao Debug(){ [ "$DEBUG" = 1 ] && echo "----------{ $*" # poderia ser uma msg colorida } #Debug(){ # [ "$DEBUG" = 1 ] && echo -e "\033[33;1m$*\033[m" #}

shellscriptprofissional.blogspot.com.br

11/50

10/11/13

Shell Script Profissional

TXT="gritaria" TXT=" $TXT " # Adiciona 5 espaos ao redor : $TXT" # Troca os espaos por exclamaes

Debug "TXT com espaos TXT=$(echo $TXT | tr ' ' '!')

Debug "TXT com exclamaes: [$TXT]" TXT=$(echo $TXT | tr a-z A-Z) echo "$TXT" # Deixa o texto em maisculas

Postado h 11th November 2012 por bferreira_user


0

Add a comment

11th November 2012

#!/bin/bash # DEBUG SETORIZADO # EXECUO PASSO A PASSO # cinco2.sh # Conta at cinco :) # D 'Enter' para que a execuo continue # No funciona no Bourne Shell (sh), recado do autor :) echo $((0+1)) echo $((0+2)) trap read DEBUG echo $((0+3)) trap '' DEBUG
shellscriptprofissional.blogspot.com.br

# liga o passo a passo

# desliga o passo a passo


12/50

10/11/13

Shell Script Profissional

echo $((0+4)) echo $((0+5))

Postado h 11th November 2012 por bferreira_user


0

Add a comment

11th November 2012

#!/bin/bash # DEBUG SETORIZADO # Estou quase desistindo, j faz tempo que eu no fao nada de til, # mas eu vou postar, mesmo que de vez em quando, para usar isso no futuro. # Um dia eu vou seguir em frente. # Usamos 'set -x' e 'set +x' para ligar e desligar o modo depurao de comandos # Usamos 'set -v' e 'set +v' para ligar e desligar o modo depurao de linhas # cinco.sh # Conta at cinco :) echo $((0+1)) echo $((0+2)) set -xv # liga o debug

echo $((0+3)) set +xv # desliga o debug

echo $((0+4)) echo $((0+5)) # a linha tem prioridade sobre o comando

shellscriptprofissional.blogspot.com.br

13/50

10/11/13

Shell Script Profissional

Postado h 11th November 2012 por bferreira_user


0

Add a comment

17th October 2012

#!/bin/bash # cinco.sh

# Conta at cinco :) # MAIS UM EXEMPLO DE DEBUG, NO BRIGUE COMIGO E COMPRE O LIVRO

echo $((0+1)) echo $((0+2)) echo $((0+3)) echo $((0+4)) echo $((0+5))

# Primeiro execute bash cinco.sh sem depurao # Agora mais uma vez bash -x cinco.sh mostra os comandos # Agora bash -v cinco.sh mostra as linhas do cdigo (com a execuo) # Use as duas opes juntas bash -xv cinco.sh o -v tem prioridade

Postado h 17th October 2012 por bferreira_user


0

Add a comment

shellscriptprofissional.blogspot.com.br

14/50

10/11/13

Shell Script Profissional

17th October 2012

#!/bin/bash # exemplo-aspas.sh TXT=' um dois trs '

echo $TXT # ocorre limpeza na varivel pelo shell echo "$TXT" # o valor aparece tal como foi atribudo echo '$TXT' # no mostra o contedo da varivel, use spas duplas :)

Postado h 17th October 2012 por bferreira_user


0

Add a comment

17th October 2012

#!/bin/bash # grita4.sh

# Mostra uma palavra ($TXT) em maisculas e com exclamaes # Exemplo: foo -> !!!!!FOO!!!!! # CAPTULO 5 - DEPURAO (DEBUG) # DEBUG GLOBAL (-X, -V) TXT="gritaria" TXT=" $TXT " # Adiciona 5 espaos ao redor

TXT=$(echo "$TXT" | tr ' ' '!') # Troca os espaos por exclamaes SPAS
shellscriptprofissional.blogspot.com.br 15/50

10/11/13

Shell Script Profissional

TXT=$(echo "$TXT" | tr a-z A-Z) # Deixa o texto em maisculas SPAS echo "$TXT" # Mostra a mensagem # Agora deu certo!

Postado h 17th October 2012 por bferreira_user


0

Add a comment

17th October 2012

#!/bin/bash # grita3.sh

# Mostra uma palavra ($TXT) em maisculas e com exclamaes # Exemplo: foo -> !!!!!FOO!!!!! # CAPTULO 5 - DEPURAO (DEBUG) # DEBUG GLOBAL (-X, -V) TXT="gritaria" TXT=" $TXT "

echo $TXT | tr ' ' '!' # , nada ainda... echo $TXT # cad os espaos echo "$TXT" # ah!!! malditas spas!

echo "$TXT" | tr ' ' '!' # foi # Sem as spas DUPLAS ao redor da varivel o shell limpa seu contedo, # o excesso de espaos eliminado

shellscriptprofissional.blogspot.com.br

16/50

10/11/13

Shell Script Profissional

Postado h 17th October 2012 por bferreira_user


0

Add a comment

17th October 2012

#!/bin/bash # grita2.sh

# Mostra uma palavra ($TXT) em maisculas e com exclamaes # Exemplo: foo -> !!!!!FOO!!!!! # CAPTULO 5 - DEPURAO (DEBUG) # DEBUG GLOBAL (-X, -V) TXT="gritaria" TXT=" $TXT " # Adiciona 5 espaos ao redor O PROBLEMA EST AQUI

echo "TXT com espaos : [$TXT]" # --> mostra se os espaos foram adicionados $TXT TXT=$(echo $TXT | tr ' ' '!') # Troca os espaos por exclamaes echo "TXT com exclamaos : [$TXT]" # --> mostra se as exclamaes aparecem em lugar de espaos

TXT=$(echo $TXT | tr a-z A-Z) # Deixa o texto em maisculas echo "$TXT" # Mostra a mensagem # Ao final notamos que o problema est em trocar os espaos por exclamaos # Executando "bash -x grita2.sh" podemos ver o que acontece a cada comando # Se h vrios comando unidos por pipe ou agrupados em um subshell vemos # sinais de "+", quanto mais fundo, mais sinais. # Descobrimos que antes no primeiro tr no foi possvel
shellscriptprofissional.blogspot.com.br 17/50

10/11/13

Shell Script Profissional

# adicionar espaos em branco ao redor de $TXT

Postado h 17th October 2012 por bferreira_user


0

Add a comment

17th October 2012

#!/bin/bash # grita1.sh

# Mostra uma palavra ($TXT) em maisculas e com exclamaes # Exemplo: foo -> !!!!!FOO!!!!! # CAPTULO 5 - DEPURAO (DEBUG) # DEBUG SIMPLES (ECHO) TXT="gritaria" TXT=" $TXT " # Adiciona 5 espaos ao redor

echo "TXT com espaos : [$TXT]" # --> mostra se os espaos foram adicionados $TXT TXT=$(echo $TXT | tr ' ' '!') # Troca os espaos por exclamaes echo "TXT com exclamaos : [$TXT]" # --> mostra se as exclamaes aparecem em lugar de espaos

TXT=$(echo $TXT | tr a-z A-Z) # Deixa o texto em maisculas echo "$TXT" # Mostra a mensagem # Ao final notamos que o problema est em trocar os espaos por exclamaes

Postado h 17th October 2012 por bferreira_user


shellscriptprofissional.blogspot.com.br 18/50

10/11/13

Shell Script Profissional

Add a comment

17th October 2012

#!/bin/bash # grita.sh

# Mostra uma palavra ($TXT) em maisculas e com exclamaes # Exemplo: foo -> !!!!!FOO!!!!! # CAPTULO 5 - DEPURAO (DEBUG)

TXT="gritaria" TXT=" $TXT " # Adiciona 5 espaos ao redor

TXT=$(echo $TXT | tr ' ' '!') # Troca os espaos por exclamaes TXT=$(echo $TXT | tr a-z A-Z) # Deixa o texto em maisculas echo "$TXT" # Mostra a mensagem # # # # Aps a execuo o resultado obtido no foi o esperado O resultado foi "GRITARIA", sem as exclamaes Segue a primeira tcnica de depurao (debug): a Verificao de sintaxe (-n) # execute "bash -n grita.sh" (sem spas), o -n uma opo # de linha de comando do shell que serve para testar se h # erros de sintaxe no cdigo (como no gcc). # Neste caso no h erros de sintaxe

Postado h 17th October 2012 por bferreira_user


0

Add a comment

shellscriptprofissional.blogspot.com.br

19/50

10/11/13

Shell Script Profissional

5th October 2012

#!/bin/bash

#usuarios-7-getopts.sh

# Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd

# # # # # # # # # # # #

Verso 1: Mostra usurios e nomes separados por TAB Verso 2: Adicionado suporte opo -h Verso 3: Adicionando suporte opo -V e opes invlidas Verso 4: Arrumando bug quando no tem opes, basename no nome do programa, -V extraindo direto dos cabealhos, adicionadas opes --help e --version Verso 5: Adicionadas as opes -s e --sort Verso 6: Adicionando opes -r, --reverse, -u, --uppercase, leitura de mltiplas opes (loop) Verso 7: Melhorias no cdigo para que fique mais legvel, adicionadas opes -d e --delimiter Verso 7: Modificada para usar o getopts

# Aurlio Marinho Jargas, Novembro de 2007

ordenar=0 inverter=0 maiusculas=0 delim='\t'

MENSAGEM_USO=" USO $(basename "$0") [OPES] OPES: -d C -r -s -u -h -V Usa o caractere C como delimitador Inverte a listagem Ordena a listagem alfabeticamente Mostra a listagem em maisculas Mostra esta tela de ajuda e sai Mostra a verso do programa e sai
20/50

shellscriptprofissional.blogspot.com.br

10/11/13

Shell Script Profissional

" # Tratamento das opes de linha de comando # NESTA ORDEM: : liga o modo silencioso, hVd so as opes, : opo com # argumentos, rsu so os argumentos que podem ser usados juntos while getopts ":hVd:rsu" opcao do case "$opcao" in # Opes que ligam/desligam chaves s) ordenar=1 ;; r) reverse=1 ;; u) maiusculas=1 ;; d) delim="$OPTARG" # Desta forma o caractere delimitador recebe a ltima coisa que foi # digitada no bash, caractere ou o espao vazio ;; h) echo "$MENSAGEM_USO" exit 0 ;; V) echo -n $(basename "$0") # Extrai a verso diretamente dos cabealhos do programa grep '^# Verso ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;; \?) echo Opo invlida: $OPTARG exit 1 ;;

shellscriptprofissional.blogspot.com.br

21/50

10/11/13

Shell Script Profissional

:) # no s um rostinho feliz, a possibilidade de erro echo Faltou argumento para: $OPTARG exit 1 ;; esac # no um judeu, o fechamento do bloco case done # Extrai a listagem lista=$(cut -d : -f 1,5 /etc/passwd) # Ordena, inverte ou converte para maisculas (se necessrio) test "$ordenar" = 1 && lista=$(echo "$lista" | sort) test "$inverter" = 1 && lista=$(echo "$lista" | tac) test "$maiusculas" = 1 && lista=$(echo "$lista" | tr a-z A-Z) # Mostra o resultado para o usurios echo "$lista" | tr : "$delim" # # # # # # Deve-se executar no bash como teste: ./usuarios-7-getopts.sh -V ./usuarios-7-getopts.sh -h ./usuarios-7-getopts.sh -sru ./usuarios-7-getopts.sh -sru -d , ./usuarios-7-getopts.sh -d ./usuarios-7-getopts.sh -d qualquercoisa <no me respnsabilizo>

Postado h 5th October 2012 por bferreira_user


0

Add a comment

5th October 2012

#!/bin/bash # getopts-teste.sh # Aurlio Marinho Jargas, Novembro de 2007

shellscriptprofissional.blogspot.com.br

22/50

10/11/13

Shell Script Profissional

# # # # # #

O getopts um comando interno (builtin) do bash que serve para processar opes de linha de comando, ele identifica e extrai cada opo informada, alm de fazer as duas verificaes bsicas de erro: quando o usurio digita uma opo invlida e quando uma opo vem sem um argumento obrigatrio.

# NOTA: O GETOPTS S FUNCIONA NO BASH E COM OPES CURTAS # (EX.: -s EM LUGAR DE --sort) # # # # # Loop que processa todas as opes da linha de comando. Ateno ao formato das opes vlidas ":sa:" - Os dois-pontos do incio ligam o modo silencioso - As opes vlidas so 'sa:', que so -s e -a - Os dois-pontos de 'a:' representam um argumento: -a FOO

# NOTA: MODO SILENCIOSO SERVE PARA OMITIR MENSAGENS DE ERRO, # ASSIM ELAS NO APARECEM NA TELA DO BASH while getopts ":sa:" opcao do # $opcao guarda a opo da vez (ou ? e : em caso de erro) # $OPTARG guarda o argumento da opo (se houver) # NOTA: O $OPTARG UMA VARIVEL DE AMBIENTE QUE GUARDA O # ARGUMENTO DA OPO ATUAL (INSISTO, SE HOUVER) case $opcao in s) echo "OK Opo simples (-s)";; a) echo "Ok Opo com argumento (-a), recebeu: $OPTARG";; \?) echo "Erro Opo invlida: $OPTARG";; :) echo "Erro Faltou argumento para: $OPTARG";; esac done # # # # O loop termina quando nenhuma opo for encontrada. Mas ainda podem existir argumentos, como um nome de arquivo. A varivel $OPTIND guarda o ndice do resto da linha de comando, til para arrancar as opes j processadas.

# NOTA: $OPTIND MAIS UMA VARIVEL DE AMBIENTE, SERVE # PARA GUARDAR O NDICE (POSIO NUMERADA) DO RESTO (FINAL) DA LINHA # DE COMANDO (NO-OPES, ESPAO VAZIO) # DESTA FORMA - POSIO 1 './getopts-teste.sh' POSIO 2 ' ' # POR ISSO QUE SE FAZ O NDICE MENOS UM
shellscriptprofissional.blogspot.com.br 23/50

10/11/13

Shell Script Profissional

echo shift $((OPTIND - 1)) echo "NDICE: $OPTIND" echo "RESTO: $*" echo # NOTA: EXECUTE NO BASH # ./getopts-teste.sh -a FOO -s /etc/passwd # ./getopts-teste.sh /etc/passwd # ./getopts-teste.sh # ./getopts-teste.sh -a # ./getopts-teste.sh -a qualquercoisa # ./getopts-teste.sh -s # ./getopts-teste.sh -s qualquercoisa

# # # # # # #

ndice ndice ndice ndice ndice ndice ndice

4 1 1 2 3 2 2

e e e e e e e

resto resto resto resto resto resto resto

/etc/passwd /etc/passwd vazio vazio vazio vazio qualquercoisa

# NOTA: OBSERVE AS MENSAGENS

Postado h 5th October 2012 por bferreira_user


0

Add a comment

4th October 2012


Os scripts que eu venho postando so do livro Shell Script Profissional do autor Aurelio Marinho Jargas. Livro muito recomendado por professores de todo o pas. Vale mesmo a pena comprar o livro e conferir a elaborao dos scripts passo-apasso. Segue o link para o site oficial:

shellscriptprofissional.blogspot.com.br

24/50

10/11/13

Shell Script Profissional

http://www.shellscript.com.br/ [http://www.shellscript.com.br/]

[http://3.bp.blogspot.com/th7dPH3RoAY/UG235DBPFEI/AAAAAAAAATk/Q5DwGJU-AxM/s1600/capa.jpg]

Postado h 4th October 2012 por bferreira_user


0

Add a comment

4th October 2012

#!/bin/bash # usuarios.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # # # # # # Verso 1: Mostra usurios e nomes separados por TAB Verso 2: Adicionado suporte opo -h Verso 3: Adicionando suporte opo -V e opes invlidas Verso 4: Arrumando bug quando no tem opes, basename no nome do programa, -V extraindo direto dos cabealhos, adicionadas opes --help e --version
25/50

shellscriptprofissional.blogspot.com.br

10/11/13

Shell Script Profissional

# Verso 5: Adicionadas as opes -s e --sort # Verso 6: Adicionando opes -r, --reverse, -u, --uppercase, # leitura de mltiplas opes (loop) # Verso 7: Melhorias no cdigo para que fique mais legvel, # adicionadas opes -d e --delimiter # DIGITE ./usuariosv2.sh -h NA TELA DO TERMINAL PARA RODAR E CONFERIR O RESULTADO # OS COLCHETES INDICAM QUE O USO DE -h OPCIONAL # O COMANDO basename SERVE PARA ELIMINAR O PATH DO NOME DO PROGRAMA

ordenar=0 # a sada dever ser ordenada? inverter=0 # a sada dever ser invertida? maiusculas=0 # a sada dever ser em maisculas? delim='\t' # caractere usado como delimitador de sada MENSAGEM_USO=" Uso: $(basename "$0") [ OPES ] -d --delimiter C Usa o caractere C como delimitador -s --sort Ordena a listagem alfabeticamente -r --reverse Inverte a listagem -h --help Mostra esta tela de ajuda e sai -V --version Mostra a verso do programa e sai -u --uppercase Mostra a listagem em maisculas " # Tratamento das opes de linha de comando # nome do programa estando na posio $0 e $1 sendo o switch na execuo em terminal while test -n "$1" do case "$1" in -s | --sort) ordenar=1 ;; -r | --reverse) inverter=1 ;; -u | --uppercase) maiusculas=1 ;; # no pode ser executado com -s, -r ou -u por causa do exit 0 # se eu retirar as sadas 'exit 0' ou 'exit 1' o script continua a execuo (bvio
shellscriptprofissional.blogspot.com.br 26/50

10/11/13

Shell Script Profissional

) # executa-se em terminal "./usuariosv5.sh -u -s -r" se eu colocar um -V no vai funcionar -d | --delimiter) shift delim="$1" if test -z "$delim" then echo "Faltou o argumento para a -d" exit 1 fi ;;

-h | --help) echo "$MENSAGEM_USO" exit 0 ;;

# no pode ser executado com -s, -r ou -u por causa do exit 0 -V | --version) echo -n "$(basename "$0")" # no coma comparadores de string, por favor # Extrai a verso diretamente dos cabealhos do programa grep '^# Verso ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;;

# no pode ser executado com -s, -r ou -u por causa do exit 1 *) if test -n "$1" # testa se a 'string' (varivel) no nula (espao em branco) then echo "Opo invlida: $1" exit 1
shellscriptprofissional.blogspot.com.br 27/50

10/11/13

Shell Script Profissional

fi ;; esac # Opo $1 j processada, a fila deve andar SHIFT shift done

# Extrai a listagem lista=$(cut -d : -f 1,5 /etc/passwd)

# Ordena a listagem (se necessrio) test "$ordenar" = 1 && lista=$(echo "$lista" | sort) # Inverte a listagem (se mecessrio) test "$inverter" = 1 && lista=$(echo "$lista" | tac) # Converte para maisculas (se necessrio) test "$maiusculas" = 1 && lista=$(echo "$lista" | tr a-z A-Z)

# desta forma, << ./usuariosv7.sh -d , >>, passando a vrgula como argumento de -d, haver a troca de ":" por "," # poderia ser outro caractere # l em cima a varivel 'delim' recebe o '\t' para que em caso de se executar # o script sem switches (sem o -d +argumento) haja a substituio de ':' por tabulao (espao em branco)

# Mostra o resultado para o usurios echo "$lista" | tr : "$delim" exit

Postado h 4th October 2012 por bferreira_user


0

Add a comment

shellscriptprofissional.blogspot.com.br

28/50

10/11/13

Shell Script Profissional

4th October 2012

#!/bin/bash # usuariosv6.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # # # # # # # # # Verso 1: Mostra usurios e nomes separados por TAB Verso 2: Adicionado suporte opo -h Verso 3: Adicionando suporte opo -V e opes invlidas Verso 4: Arrumando bug quando no tem opes, basename no nome do programa, -V extraindo direto dos cabealhos, adicionadas opes --help e --version Verso 5: Adicionadas as opes -s e --sort Verso 6: Adicionando opes -r, --reverse, -u, --uppercase, leitura de mltiplas opes (loop)

# DIGITE ./usuariosv2.sh -h NA TELA DO TERMINAL PARA RODAR E CONFERIR O RESULTADO # OS COLCHETES INDICAM QUE O USO DE -h OPCIONAL # O COMANDO basename SERVE PARA ELIMINAR O PATH DO NOME DO PROGRAMA

ordenar=0 # a sada dever ser ordenada? inverter=0 # a sada dever ser invertida? maiusculas=0 # a sada dever ser em maisculas? MENSAGEM_USO=" Uso: $(basename "$0") [ -s | -r | -h | -V | -u ] -s Ordena a listagem alfabeticamente -r Inverte a listagem -h Mostra esta tela de ajuda e sai -V Mostra a verso do programa e sai -u Mostra a listagem em maisculas " # Tratamento das opes de linha de comando
shellscriptprofissional.blogspot.com.br 29/50

10/11/13

Shell Script Profissional

# nome do programa estando na posio $0 e $1 sendo o switch na execuo em terminal while test -n "$1" do case "$1" in -s | --sort) ordenar=1 ;; -r | --reverse) inverter=1 ;;

# no pode ser executado com -s, -r ou -u por causa do exit 0 # se eu retirar as sadas 'exit 0' ou 'exit 1' o script continua a execuo (bvio ) # executa-se em terminal "./usuariosv6.sh -u -s -r" se eu colocar um -V no vai funcionar

-h | --help) echo "$MENSAGEM_USO" exit 0 ;; -u | --uppercase) maiusculas=1 ;;

# no pode ser executado com -s, -r ou -u por causa do exit 0 -V | --version) echo -n "$(basename "$0")" # no coma switches, por favor # Extrai a verso diretamente dos cabealhos do programa
shellscriptprofissional.blogspot.com.br 30/50

10/11/13

Shell Script Profissional

grep '^# Verso ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;;

# no pode ser executado com -s, -r ou -u por causa do exit 1 *) if test -n "$1" # testa se a 'string' (varivel) no nula (espao em branco) then echo "Opo invlida: $1" exit 1 fi ;; esac # Opo $1 j processada, a fila deve andar SHIFT shift done

# Extrai a listagem lista=$(cut -d : -f 1,5 /etc/passwd)

# Ordena a listagem (se necessrio) if test "$ordenar" = 1 then lista=$(echo "$lista" | sort) fi

# Inverte a listagem (se mecessrio) if test "$inverter" = 1 then


shellscriptprofissional.blogspot.com.br 31/50

10/11/13

Shell Script Profissional

lista=$(echo "$lista" | tac) fi

# Converte para maisculas (se necessrio) if test "$maiusculas" = 1 then lista=$(echo "$lista" | tr a-z A-Z) fi

# Mostra o resultado para o usurios echo "$lista" | tr : \\t | tr -d , # adicionado o "| tr -d , " para retirar as vrgulas exit

Postado h 4th October 2012 por bferreira_user


0

Add a comment

4th October 2012

#!/bin/bash # usuariosv4.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # # # # Verso Verso Verso Verso 1: Mostra usurios e nomes separados por TAB 2: Adicionado suporte opo -h 3: Adicionando suporte opo -V e opes invlidas 4: Arrumando bug quando no tem opes, basename no
32/50

shellscriptprofissional.blogspot.com.br

10/11/13

Shell Script Profissional

# nome do programa, -V extraindo direto dos cabealhos, # adicionadas opes --help e --version # Verso 5: Adicionadas as opes -s e --sort

ordenar=0 # a sada dever ser ordenada? inverter=0 # a sada dever ser invertida? maiusculas=0 # a sada dever ser em maisculas? MENSAGEM_USO=" Uso: $(basename "$0") [ -s | -h | -V ] -s Ordena a listagem alfabeticamente -h Mostra esta tela de ajuda e sai -V Mostra a verso do programa e sai " # Tratamento das opes de linha de comando # nome do programa estando na posio $0 e $1 sendo o switch na execuo em terminal while test -n "$1" do case "$1" in -s | --sort) ordenar=1 ;; -h | --help) echo "$MENSAGEM_USO" exit 0 ;; -V | --version) echo -n "$(basename "$0")" # no coma comparadores de strings, por favor # Extrai a verso diretamente dos cabealhos do programa grep '^# Verso ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;;
shellscriptprofissional.blogspot.com.br 33/50

10/11/13

Shell Script Profissional

# no pode ser executado com -s, -r ou -u por causa do exit 1 *) if test -n "$1" # testa se a 'string' (varivel) no nula (espao em branco) then echo "Opo invlida: $1" exit 1 fi ;; esac # Opo $1 j processada, a fila deve andar SHIFT shift done

# Extrai a listagem lista=$(cut -d : -f 1,5 /etc/passwd)

# Ordena a listagem (se necessrio) if test "$ordenar" = 1 then lista=$(echo "$lista" | sort) fi

# Mostra o resultado para o usurios echo "$lista" | tr : \\t | tr -d , # adicionado o "| tr -d ," para retirar as vrgulas exit

Postado h 4th October 2012 por bferreira_user


shellscriptprofissional.blogspot.com.br 34/50

10/11/13

Shell Script Profissional

Add a comment

4th October 2012

#!/bin/bash # usuariosv4.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # # # # # # Verso 1: Mostra usurios e nomes separados por TAB Verso 2: Adicionado suporte opo -h Verso 3: Adicionando suporte opo -V e opes invlidas Verso 4: Arrumando bug quando no tem opes, basename no nome do programa, -V extraindo direto dos cabealhos, adicionadas opes --help e --version

MENSAGEM_USO=" Uso: $(basename "$0") [-h | -V] -h Mostra esta tela de ajuda e sai -V Mostra a verso do programa e sai " # Tratamento das opes de linha de comando # nome do programa estando na posio $0 e $1 sendo o switch na execuo em terminal case "$1" in -h | --help) echo "$MENSAGEM_USO" exit 0 ;; -V | --version)
shellscriptprofissional.blogspot.com.br 35/50

10/11/13

Shell Script Profissional

echo -n "$(basename "$0")" # Extrai a verso diretamente dos cabealhos do programa grep '^# Verso ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;; *) if test -n "$1" # testa se a 'string' (varivel) no nula (espao em branco) then echo "Opo invlida: $1" exit 1 fi ;; esac # Processamento cut -d : -f 1,5 /etc/passwd | tr : \\t

# grep '^# Verso ' usuariosv4.sh --> vai procurar em 'usuariosv3.sh' todas as linhas iniciadas por '# Verso' # grep '^# Verso ' usuariosv4.sh | tail -1 --> o 'tail -1' vai mostrar a primeira linha de baixo pra cima # grep '^# Verso ' usuariosv4.sh | tail -1 | cut -d : -f 1 --> vai delimitar, por campo, com a opo '-d', # usando ':' como caractere delimitador e, '-f' determina a posio # grep '^# Verso ' usuariosv3.sh | tail -1 | cut -d : -f 1 | tr -d \# --> elimina o caratere '#' da sada padro, # NOTA: SE FOR EXECUTADO O PROGRAMA DESTA FORMA './usuariosv4.sh #' O TERMINAL NO CONSIDERA '#' COMO # UMA OPO INVLIDA, OU SEJA, ELE O CONSIDERA COMO SE FOSSE UMA VARIVEL NULA, UM ESPAO EM BRANCO Postado h 4th October 2012 por bferreira_user
0

Add a comment

shellscriptprofissional.blogspot.com.br

36/50

10/11/13

Shell Script Profissional

4th October 2012

#!/bin/bash #usuariosv3.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # Verso 1: Mostra usurios e nomes separados por TAB # Verso 2: Adicionado suporte opo -h # Verso 3: Adicionando suporte opo -V e opes invlidas # OS COLCHETES INDICAM QUE O USO DE -h OPCIONAL # O COMANDO basename SERVE PARA ELIMINAR O PATH DO NOME DO PROGRAMA MENSAGEM_USO=" Uso: $(basename "$0") [-h | -V] -h Mostra esta tela de ajuda e sai -V Mostra a verso do programa e sai " # Tratamento das opes de linha de comando # nome do programa estando na posio $0 e $1 sendo o switch na execuo em terminal case "$1" in -h | --help) echo "$MENSAGEM_USO" exit 0 ;; -V | --version) echo "$(basename "$0") Verso 3" exit 0 ;;
shellscriptprofissional.blogspot.com.br 37/50

10/11/13

Shell Script Profissional

# avaliao de switch invlido *) echo "Opo invlida: $1" exit 1 ;; esac # Processamento cut -d : -f 1,5 /etc/passwd | tr : \\t Postado h 4th October 2012 por bferreira_user
0

Add a comment

4th October 2012

#!/bin/bash # usuariosv2.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # Verso 2 ajuda=" Menu: $(basename "$0") [-h | -V] -h exibe este menu -V exibe a verso do script " case "$1" in -h | --help)
shellscriptprofissional.blogspot.com.br 38/50

10/11/13

Shell Script Profissional

echo "$ajuda" exit 0 ;; -V | --version) echo -n "$(basename "$0")" grep '^# Verso ' "$0" | tr -d \# exit 0 ;; *) if test -n "$1" then echo "Switch invlido: $1" exit 1 fi ;; esac cut -d : -f 1,5 /etc/passwd | tr : \\t Postado h 4th October 2012 por bferreira_user
0

Add a comment

4th October 2012


#!/bin/bash #usuarios.sh # Mostra os logins e nomes de usurios do sistema # Obs.: L dados do arquivo /etc/passwd # Aurlio, Novembro de 2007 # Verso 1: Mostra usurios e nomes separados por TAB

shellscriptprofissional.blogspot.com.br

39/50

10/11/13

Shell Script Profissional

# DIGITE ./usuarios.sh -h NA TELA DO TERMINAL PARA RODAR E CONFERIR O RESULTADO # SE FOSSE PASSADA A OPO -x COMO PARMETRO O PROGRAMA IGNORARIA A MENSAGEM E # CONTINUARIA A EXECUTAR # OS COLCHETES INDICAM QUE O USO DE -h OPCIONAL MENSAGEM_USO=" Uso: $0 [-h] -h Mostra esta tela de ajuda e sai " # Tratamento das opes de linha de comando if test "$1" = "-h" then echo "$MENSAGEM_USO" exit 0 fi # Processamento cut -d : -f 1,5 /etc/passwd | tr : \\t Postado h 4th October 2012 por bferreira_user
0

Add a comment

4th October 2012

#!/bin/bash # multiplicacao.sh # Verso 1.0

shellscriptprofissional.blogspot.com.br

40/50

10/11/13

Shell Script Profissional

# 1 - Faa um programa que receba 2 valores de entrada e multiplique-os, depois # faa com o que o programa receba outro valor e divida o resultado da multiplicao por esse valor.

ajuda=" Menu: $(basename "$0") [-h | -V] -h exibe este menu. -V exibe a verso do script " case "$1" in -h | --help) echo "$ajuda" exit 0 ;; -V | --version) echo -n "$(basename "$0")" grep '^# Verso ' "$0" | tr -d \# exit 0 ;; *) if test -n "$1" then echo "Switch invlido: $1" exit 1 fi ;; esac echo "Digite os valores para multiplicao" echo "Digite o primeiro valor"
shellscriptprofissional.blogspot.com.br 41/50

10/11/13

Shell Script Profissional

read a echo "Digite o segundo valor" read b resultado1=$((a * b)) echo "Digite o dividendo" read dividendo resultado2=$((resultado1/dividendo)) echo "O resultado da diviso da multiplicao de $a por $b $resultado2" exit

Postado h 4th October 2012 por bferreira_user


0

Add a comment

4th October 2012

#!/bin/bash # dados2.sh

# 2 - Faa um Programa que receba um nome de entrada, idade, sexo (M ou F), # e exiba na tela a seguinte mensagem: Meu nome (nome) tenho (idade) sou # do sexo (sexo).

# autor <nome do autor> # data 16 - 09 - 2012 # verso 2.1 ajuda="

shellscriptprofissional.blogspot.com.br

42/50

10/11/13

Shell Script Profissional

Menu: $(basename "$0") [-h | -V] -h exibe este menu. -V exibe a verso do script " case "$1" in -h | --help) echo "$ajuda" exit 0 ;; -V | --version) echo -n "$(basename "$0")" grep '^# verso ' "$0" | tail | tr -d \# exit 0 ;; *) if test -n "$1" then echo "Switch invlido: $1" exit 1 fi ;; esac echo "###### Coleta de dados ######" echo "Nome" read nome echo "Idade" read idade echo "Sexo (M ou F)"

shellscriptprofissional.blogspot.com.br

43/50

10/11/13

Shell Script Profissional

read sexo

# O bloco abaixo vai testar se o valor da varivel # minsculo, se for o comando 'tr' vai convert=lo # em maisculo

if test "$sexo" = "m" then sexo2=$(echo "$sexo" | tr a-z A-Z) elif test "$sexo" = "f" then sexo2=$(echo "$sexo" | tr a-z A-Z) fi

# Este bloco vai testar se a varivel $sexo recebeu # um valor aceitvel, ou seja, F ou M.

if test "$sexo2" = "M" then echo "Meu nome $nome tenho $idade sou do sexo masculino." elif test "$sexo2" = "F" then echo "Meu nome $nome tenho $idade sou do sexo feminino." else echo "Meu nome $nome tenho $idade." echo "Sexo no cadastrado ou no quis informar." fi

# Este programa no analisa a possibilidade de, no caso de digitao errada, # perguntar novamente ao usurio seu sexo.

shellscriptprofissional.blogspot.com.br

44/50

10/11/13

Shell Script Profissional

exit

Postado h 4th October 2012 por bferreira_user


0

Add a comment

4th October 2012

#!/bin/bash # dados.sh

# 2 - Faa um Programa que receba um nome de entrada, idade, sexo (M ou F), # e exiba na tela a seguinte mensagem: Meu nome (nome) tenho (idade) sou # do sexo (sexo).

# autor <nome do autor> # data 16 - 09 - 2012 # verso 2.0 ajuda=" Menu: $(basename "$0") [-h | -V] -h exibe este menu. -V exibe a verso do script " case "$1" in -h | --help) echo "$ajuda" exit 0 ;; -V | --version)
shellscriptprofissional.blogspot.com.br 45/50

10/11/13

Shell Script Profissional

echo -n "$(basename "$0")" grep '^# verso ' "$0" | tr -d \# exit 0 ;; *) if test -n "$1" then echo "Switch invlido: $1" exit 1 fi ;; esac echo " ###### Coleta de dados ###### " echo "Nome" read nome echo "Idade" read idade echo "Sexo (M ou F)" read sexo

# Logo abaixo o valor da varivel $sexo ser testada # como eu o test funciona como uma chave s haver uma # opo vlida, ligado ou desligado, F ou M. test $sexo = 'M' && sexo='masculino' test $sexo = 'F' && sexo='feminino' echo "Meu nome $nome tenho $idade sou do sexo $sexo."

shellscriptprofissional.blogspot.com.br

46/50

10/11/13

Shell Script Profissional

exit 0

Postado h 4th October 2012 por bferreira_user


0

Add a comment

4th October 2012

#!/bin/bash # area-triangulo.sh # Verso 1.0

# Faa um programa que calcule a rea de um tringulo # sabendo que o usurio deve entrar com as medidas. # Frmula: A=b*h/2

MENSAGEM_USO=" USO: $(basename "$0") [-h | -V] -h exibe o menu de ajuda. -V exibe a verso do programa. " case "$1" in -h | --help) echo "$MENSAGEM_USO" exit 0 ;; -V | --version) echo -n "$(basename "$0")" grep '^# Verso ' "$0" | tail | cut -d : -f 1 | tr -d \#
shellscriptprofissional.blogspot.com.br 47/50

10/11/13

Shell Script Profissional

exit 0 ;; *) if test -n "$1" then echo "Opo invlida: $1" exit 1 fi ;; esac echo " ########## Clculo da rea de um tringulo ########## " echo "Entre com a base do tringulo" read b echo "Entre com a altura do tringulo" read h # note que o script no verifica se as variveis contm um valor numrico ou no echo " Sua rea $((b*h/2)) unidades. " exit 0

Postado h 4th October 2012 por bferreira_user


0

Add a comment

shellscriptprofissional.blogspot.com.br

48/50

10/11/13

Shell Script Profissional

4th October 2012


#!/bin/bash # area.sh # Verso 1

# Faa um programa que calcule a rea sabendo que a frmula # da rea A=LxL.

mensagem=" Menu: "$(basename "$0")" [-h | -V] -h exibe o menu de ajuda. -V exibe a verso do script " case "$1" in -h | --help) echo "$mensagem" exit 0 ;; -V | --version) echo -n "$(basename "$0")" grep '^# Verso ' "$0" | tr -d \# exit 0 ;; *) if test -n "$1" then echo "Opo invlida: $1" exit 1
shellscriptprofissional.blogspot.com.br 49/50

10/11/13

Shell Script Profissional

fi ;; esac echo " ######## Clculo da rea de um retngulo/quadrado ######## " echo "Entre com o valor de L1" read L1 echo "Entre com o valor de L2" read L2 echo "O valor da rea $(($L1*$L2))" exit 0 Postado h 4th October 2012 por bferreira_user
0

Add a comment

shellscriptprofissional.blogspot.com.br

50/50

Das könnte Ihnen auch gefallen