Ir para o conteúdo
ou

Logo noosfero

ODF Alliance Award

Furusho

TDF Planet

redirection forbidden: http://planet.documentfoundation.org/atom.xml -> https://planet.documentfoundation.org/atom.xml

Linux Magazine

getaddrinfo: Name or service not known

BR.Linux.org

redirection forbidden: http://br-linux.org/feed -> https://br-linux.org/feed

Seja Livre!

redirection forbidden: http://sejalivre.org/feed/ -> https://sejalivre.org/feed/

Linux Feed

getaddrinfo: Name or service not known

Computerworld

getaddrinfo: Name or service not known

Guia do Hardware

530

Convergência Digital

503 Backend fetch failed

PC World

getaddrinfo: Name or service not known

IDG Now!

getaddrinfo: Name or service not known

Info

Invalid feed format.

Users SL Argentina

redirection forbidden: http://drupal.usla.org.ar/rss.xml -> https://cobalto.gnucleo.net/rss.xml

Tux Chile

500 Internal Server Error

Tecno Libres - Cubas

redirection forbidden: http://gutl.jovenclub.cu/feed -> https://gutl.jovenclub.cu/feed

Linux Colômbia

Invalid feed format.

Linux Costa Rica

Invalid feed format.

Software Libre Peru

Invalid feed format.

Linux Equador

Invalid feed format.

Linux Espanha

Invalid feed format.

Linux Guatemala

Invalid feed format.

Linux México

Invalid feed format.

Linux Nicarágua

Invalid feed format.

Linux Panamá

Invalid feed format.

Linux Peru

Invalid feed format.

Linux El Salvador

Invalid feed format.

Linux Venezuela

Invalid feed format.

Soft Libre Bolívia

redirection forbidden: http://www.softwarelibre.org.bo/feed/ -> https://www.softwarelibre.org.bo/feed/

GNU/Linux Paranguay

getaddrinfo: Name or service not known

Soft Libre Honduras

redirection forbidden: http://preguntaslinux.org/syndication.php -> https://preguntaslinux.org/syndication.php

Linux Rep.Dominicana

404 Not Found

 Voltar a FREE SOFTWAR...
Tela cheia

Algumas novidades do Bash 4.0, por Julio Neves: terminadores do case

22 de Fevereiro de 2011, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 312 vezes

O Julio Neves, uma das referências nacionais sobre shell script, autor de obras sobre o assunto e instrutor frequente em cursos sobre Bash e Zenity, enviou o artigo abaixo sobre algumas das novidades trazidas na versão 4 do Bash, que publico na íntegra com os agradecimentos ao mestre!

Algumas novidades do Bash 4.0: terminadores do case

Por Julio Neves

O comando case

O bash 4.0 introduziu duas novas facilidades no comando case. A partir desta versão, existem mais dois terminadores de bloco além do ;;, que são:

;;& - Quando um bloco de comandos for encerrado com este terminador, o programa não sairá do case, mas testará os próximos padrões;

;& - Neste caso, o próximo bloco será executado, sem sequer testar o seu padrão.

Exemplo

Suponha que no seu programa possam ocorrer 4 tipos de erro e você resolva representar cada um deles por uma potência de 2, isto é 20=1, 21=2, 22=4, 23=8, de forma que a soma dos erros ocorridos gerem um número único para representá-los (é assim que se formam os números binários). Assim, se ocorrem erros dos tipos 1 e 4, será passado 5 (4+1) para o programa, se os erros forem 1, 4 e 8, será passado 13 (8+4+1).

$ cat case.sh

#!/bin/bash

# Recebe um código formado pela soma de 4 tipos

#+ de erro e dá as msgs correspondentes. Assim,

#+ se houveram erros tipo 4 e 2, o script receberá 6

#+ Se os erros foram 1 e 2, será passado 3. Enfim

#+ os códigos de erro seguem uma formação binária.

Bin=$(bc <<< “obase=2; $1″) Passa para binário

Zeros=0000

Len=${#Bin} Pega tamanho de $Bin

Bin=${Zeros:$Len}$Bin Preenche com zeros à esquerda

# Poderíamos fazer o mesmo que foi feito acima

#+ com um cmd printf

case $Bin in

1[01][01][01]) echo Erro tipo 8;;&

[01]1[01][01]) echo Erro tipo 4;;&

[01][01]1[01]) echo Erro tipo 2;;&

[01][01][01]1) echo Erro tipo 1;;&

0000) echo Não há erro;;&

*) echo Binário final: $Bin

esac

Repare que todas as opções serão testadas para saber quais são bits ligados (zero=desligado, um=ligado). No final aparece o binário gerado para que você possa comparar com o resultado.

Testando:

$ case.sh 5

Erro tipo 4

Erro tipo 1

Binário final: 0101

$ case.sh 13

Erro tipo 8

Erro tipo 4

Erro tipo 1

Binário gerado: 1101

Veja também este fragmento de código adaptado de http://tldp.org/LDP/abs/html/bashver4.html.

case “$1″ in

[[:print:]] ) echo $1 é um caractere imprimível;;&

# O terminador ;;& testará o próximo padrão

[[:alnum:]] ) echo $1 é um carac. alfa/numérico;;&

[[:alpha:]] ) echo $1 é um carac. alfabético ;;&

[[:lower:]] ) echo $1 é uma letra minúscula ;;&

[[:digit:]] ) echo $1 é um caractere numérico ;&

# O terminador ;& executará o próximo bloco…

%%%@@@@@ ) echo “************************” ;;

# ^^^^^^^^ … mesmo com um padrão maluco.

esac

Sua execução passando 3 resultaria:

3 é um caractere imprimível

3 é um carac. alfa/numérico

3 é um caractere numérico

********************************

Passando m:

m é um caractere imprimível

m é um carac. alfa/numérico

m é um carac. alfabético

m é uma letra minúscula

Passando / :

/ é um caractere imprimível


Fonte: http://br-linux.org/2011/algumas-novidades-do-bash-4-0-por-julio-neves-terminadores-do-case/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.