shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] CURIOSIDADES: Discussão sobre ShellScript no 4Chan


From: Paulo Bettega
Subject: Re: [shell-script] CURIOSIDADES: Discussão sobre ShellScript no 4Chan
Date: Mon, 12 Jan 2015 15:29:42 -0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.3.0

Hum é verdade o case casou antes do que eu queria, se não amarrar
direito casa errado (ops... não sei de nada, sou solteiro :) )


Mas acho que o case novo conserta o erro http://pastebin.com/2c0nURV4

Percent=50.23%
case $Percent in
        100%) Faixa=100;cor=32
        ;;
        [0-9].*|1[0-9]*) Faixa=000;cor=31
        ;;
        [23][0-9]*) Faixa=020;cor=35
        ;;
        [45][0-9]*) Faixa=040;cor=33
        ;;
        [67][0-9]*) Faixa=060;cor=36
        ;;
        [89][0-9]*) Faixa=080;cor=32
        ;;
esac
echo $Faixa
040


O Alfredo lembrou de cortar os decimais, já que nesse caso eles não tem 
importância.
Vou refazer o script assim, acho que o case vai ficar mais simples.


Abraços Paulo Bettega




On 12-01-2015 14:53, 'Julio C. Neves' address@hidden [shell-script] wrote:
Sem dúvida, Paulo. Mas se vc não especificar os 2 casos (com números inteiros e 
com números reais),
acho que não conseguirá fazer com somente um case, terá de isolar a parte 
inteira com um cut.

Veja isso:
$ Nota=50%
$ Faixa=$(case $Nota in
*[01][0-9]%) echo entre 0 e 20 ;;
*[23][0-9]%) echo entre 20 e 40 ;;
*[45][0-9]%) echo entre 40 e 60 ;;
*[56][0-9]%) echo entre 60 e 80;;
*[78][0-9]%) echo entre 80 e 100;;
*) echo cheia
esac); echo $Faixa
entre 40 e 60

$ Nota=50.23%
julio@ub-julio ~/tstsh $ Faixa=$(case $Nota in
*[01][0-9]%) echo entre 0 e 20 ;;
*[23][0-9]%) echo entre 20 e 40 ;;
*[45][0-9]%) echo entre 40 e 60 ;;
*[56][0-9]%) echo entre 60 e 80;;
*[78][0-9]%) echo entre 80 e 100;;
*) echo cheia
esac); echo $Faixa
entre 20 e 40

Esse último casou com a parte fracionária

Abcs,
Julio
*@juliobash**
Próximos cursos de Shell*
*Cidade        LocalPeríodo*
*Rio de JaneiroEDX <http://edx.srv.br/>09 a 13/03/15*
*São Paulo 4Linux 
<http://www.4linux.com.br/cursos/programacao-em-shell-script>24 a 28/11/14*
Dou treinamento de /Shell/ em qualquer cidade.
Para mais detalhes, me mande um e-mail <mailto:address@hidden>.


Em 12 de janeiro de 2015 14:27, Alfredo Casanova address@hidden 
<mailto:address@hidden>
[shell-script] <address@hidden <mailto:address@hidden>> escreveu:

    __

    Acho que pra finalidade do script seria mais simples colocar um cut 
retirando os decimais.

    On Mon Jan 12 2015 at 1:57:43 PM Paulo Bettega address@hidden
    <mailto:address@hidden> [shell-script] <address@hidden
    <mailto:address@hidden>> wrote:

        Julio vc tem razão, só vi esse erro depois que fiquei monitorando o note
        até que ele desligou por falta de bateria.

        Não tenho o acpi, então só posso relatar o script com upower.
        A saída do upower é sempre com decimais separados por ponto,
        eu vi com três, quatro e cinco casas decimais.

        Abaixo de 10% a unidade só tem um dígito.
        Não sei o que acontece abaixo de 1% ou quando a bateria chega a 0%
        porque o note desligou logo que abaixou de 2%. Mas acho que deve ser
        algo como 0.1234% e o zero deve ser 0% mesmo, porque a carga máxima
        é 100% sem casas decimais.

        Levando isso em conta editei o script desse jeito, incluindo um teste
        para verificar o $DISPLAY.
        Pelo nome (xfpm...), os ícones devem ser específicos do Xfce.
        http://pastebin.com/2c0nURV4

        Abraços Paulo Bettega

        ps - Depois de pesquisar sobre o upower, realmente vi que a minha 
bateria
        está começando a acabar. O campo 'capacity' mostra a carga máxima
        da bateria, a minha está em 81.8636%.
        Ainda tem outro problema: apesar de mostrar fully-charged, às vezes
        não carrega 100%, fica na faixa dos 90%. Nesse caso coloquei um ícone
        diferente indicando o problema.



        On 12-01-2015 10:24, 'Julio C. Neves' address@hidden 
<mailto:address@hidden>
        [shell-script] wrote:
         > Temos aqui alguns problemas:
         > » O case não aceita expressões regulares e sim os coringas de 
expansão de arquivo (glob
        expansion) e
         > a barra vertical (|) como 'ou';
         > » Um colega de lista reportou que o resultado não seria 
necessariamente inteiro, poderia
        ser núm real.
         > Esse último arrasa a solução do Paulo Bettega, veja:
         >
         > $ Nota=80,09
         > $ case $Nota in
         >  >             *100%) echo 100 ;; # ou *100*) caso exista 100.0%
         >  >             *[01][0-9]*) echo 000 ;;
         >  >             *[23][0-9]*) echo 020 ;;
         >  >             *[45][0-9]*) echo 040 ;;
         >  >             *[67][0-9]*) echo 060 ;;
         >  >             *[89][0-9]*) echo 080 ;;
         >  >             *) echo erro? ;;
         >  >       esac
         > 000
         >
         > O case deveria voltar 080, mas a glob casou com o 09 da expressão. 
Creio que a saída seja
        usar um
         > [!.] (não ponto) e um 'ou' (|), para distinguir resultados inteiros 
de reais:
         > $ case $Nota in
         >      *[!.][01][0-9]%*|*[01][0-9].*) echo 000 ;;
         >      *[!.][23][0-9]%*|*[23][0-9].*) echo 020 ;;
         >      *[!.][45][0-9]%*|*[45][0-9].*) echo 040 ;;
         >      *[!.][67][0-9]%*|*[67][0-9].*) echo 060 ;;
         >      *[!.][89][0-9]%*|*[89][0-9].*) echo 080 ;;
         >      *) echo 100
         > esac
         >
         > Acho que deve ter algo mais sucinto para fazer isso, mas não estou conseguindo 
"ver" agora.
         >
         >
         > Abcs,
         > Julio
         > *@juliobash**
         > Próximos cursos de Shell*
         > *Cidade        LocalPeríodo*
         > *Rio de JaneiroEDX <http://edx.srv.br/>09 a 13/03/15*
         > *São Paulo 4Linux 
<http://www.4linux.com.br/__cursos/programacao-em-shell-__script
        <http://www.4linux.com.br/cursos/programacao-em-shell-script>>24 a 
28/11/14*
         > Dou treinamento de /Shell/ em qualquer cidade.
         > Para mais detalhes, me mande um e-mail <mailto:address@hidden
        <mailto:address@hidden>>__.
         >
         >
         > Em 8 de janeiro de 2015 16:55, Paulo Bettega address@hidden
        <mailto:address@hidden>
         > <mailto:address@hidden.__br <mailto:address@hidden>> [shell-script]
        <address@hidden.__br <mailto:address@hidden>
         > <mailto:shell-script@__yahoogrupos.com.br <mailto:address@hidden>>>
        escreveu:
         >
         >     Mestre Julio, mas nesse caso o 100% não cairia na primeira opção?
         >
         >            case $Nota in
         >                  *[01][0-9]*%) echo 000 ;;
         >
         >
         >     Colocando o 100% literal no começo resolveria.
         >
         >            case $Nota in
         >                  *100%) echo 100 ;; # ou *100*) caso exista 100.0%
         >                  *[01][0-9]*) echo 000 ;;
         >                  *[23][0-9]*) echo 020 ;;
         >                  *[45][0-9]*) echo 040 ;;
         >                  *[67][0-9]*) echo 060 ;;
         >                  *[89][0-9]*) echo 080 ;;
         >                  *) echo erro? ;;
         >            esac
         >
         >
         >     Abraços Paulo Bettega
         >
         >
         >     On 08-01-2015 16:12, 'Julio C. Neves' address@hidden
        <mailto:address@hidden> <mailto:address@hidden <mailto:address@hidden>>
         >     [shell-script] wrote:
         >      > Valeu Paulo, mas é melhor tirar o ponto, pois podem aparecer 
números inteiros. O
        asterisco só já
         >      > resolve isso.
         >      >
         >      > Em 08/01/2015 11:27, "Paulo Bettega address@hidden
        <mailto:address@hidden> <mailto:address@hidden.__br
        <mailto:address@hidden>>
         >     <mailto:address@hidden.__br <mailto:address@hidden>
        <mailto:address@hidden.__br <mailto:address@hidden>>>
         >      > [shell-script]" <address@hidden.__br
        <mailto:address@hidden> <mailto:shell-script@__yahoogrupos.com.br
        <mailto:address@hidden>>
         >     <mailto:shell-script@__yahoogrupos.com.br <mailto:address@hidden>
        <mailto:shell-script@__yahoogrupos.com.br <mailto:address@hidden>>>> 
escreveu:
         >      >
         >      >     Julio, aqui não deu certo, a saída do upower fica assim
         >      >     percentage: 34.2032%
         >      >     mas nem sempre com quatro casas depois da vírgula.
         >      >
         >      >     $ upower -v
         >      >     UPower client version 0.9.17
         >      >     UPower daemon version 0.9.1
         >      >
         >      >
         >      >     Com o case de acordo o script funciona
         >      >     case $Nota in
         >      >           *[01][0-9].*%) echo 000 ;;
         >      >           *[23][0-9].*%) echo 020 ;;
         >      >           *[45][0-9].*%) echo 040 ;;
         >      >           *[67][0-9].*%) echo 060 ;;
         >      >           *[89][0-9].*%) echo 080 ;;
         >      >           *) echo 100 ;;
         >      >     esac
         >      >
         >      >     O meu note é velho e a bateria dura umas 2 horas, é o 
ideal pra testar
         >      >     um script desses :)
         >      >     while true;do bateria.sh;sleep 60;done
         >      >     cai 1% a cada minuto mais ou menos.
         >      >
         >      >     Abraços Paulo Bettega
         >      >
         >      >
         >      >     On 08-01-2015 09:53, 'Julio C. Neves' address@hidden
        <mailto:address@hidden>
         >     <mailto:address@hidden <mailto:address@hidden>>
        <mailto:address@hidden <mailto:address@hidden> <mailto:address@hidden
        <mailto:address@hidden>>__>
         >      >     [shell-script] wrote:
         >      >      > Mas vc testou o bacalho? Conhecia o notify-send? O 
script dá para entender?
         >      >      >
         >      >      > Abcs,
         >      >      > Julio
         >      >      > *@juliobash**
         >      >      > Próximos cursos de Shell*
         >      >      > *Cidade        LocalPeríodo*
         >      >      > *Rio de JaneiroEDX <http://edx.srv.br/>09 a 13/03/15*
         >      >      > *São Paulo 4Linux
        <http://www.4linux.com.br/__cursos/programacao-em-shell-__script
        <http://www.4linux.com.br/cursos/programacao-em-shell-script>>24 a
         >     28/11/14*
         >      >      > Dou treinamento de /Shell/ em qualquer cidade.
         >      >      > Para mais detalhes, me mande um e-mail 
<mailto:address@hidden
        <mailto:address@hidden>
         >     <mailto:address@hidden <mailto:address@hidden>>
         >      >     <mailto:address@hidden <mailto:address@hidden>
        <mailto:address@hidden <mailto:address@hidden>>__>>.
         >      >      >
         >      >      >
         >      >      > Em 8 de janeiro de 2015 09:21, MrBiTs address@hidden
        <mailto:address@hidden>
         >     <mailto:address@hidden <mailto:address@hidden>>
        <mailto:address@hidden <mailto:address@hidden> <mailto:address@hidden
        <mailto:address@hidden>>>
         >      >     <mailto:address@hidden <mailto:address@hidden>
        <mailto:address@hidden <mailto:address@hidden>> <mailto:address@hidden
        <mailto:address@hidden>
         >     <mailto:address@hidden <mailto:address@hidden>>>__>
         >      >      > [shell-script] <address@hidden.__br
        <mailto:address@hidden>
         >     <mailto:shell-script@__yahoogrupos.com.br 
<mailto:address@hidden>>
        <mailto:shell-script@__yahoogrupos.com.br <mailto:address@hidden>
         >     <mailto:shell-script@__yahoogrupos.com.br 
<mailto:address@hidden>>>
         >      >     <mailto:shell-script@__yahoogrupos.com.br
        <mailto:address@hidden> <mailto:shell-script@__yahoogrupos.com.br
        <mailto:address@hidden>>
         >     <mailto:shell-script@__yahoogrupos.com.br <mailto:address@hidden>
        <mailto:shell-script@__yahoogrupos.com.br <mailto:address@hidden>>>>> 
escreveu:
         >      >      >
         >      >      >     __
         >      >      >
         >      >      >     -----BEGIN PGP SIGNED MESSAGE-----
         >      >      >     Hash: SHA256
         >      >      >
         >      >      >      > Eu vi um script que media a bateria do notebook 
e fiz uma coisa que
        estava com
         >     vontade de
         >      >      >     fazer mas esquecia sempre: veja que
         >      >      >      > legal (em debian, pelo menos, funciona pq o 
notify-send vem
        instalado), mas não
         >     está
         >      >     testado.
         >      >      >     Meu note é novo e a bateria é de
         >      >      >      > 12 horas aí não sai de 100% de carga.
         >      >      >      >
         >      >      >      > Se alguém descobrir zebra, me relate, por favor.
         >      >      >      >
         >      >      >      > #!/bin/bash Nota=$(upower -i $(upower -e | grep 
BAT) | grep percentage)
         >      >      >      >
         >      >      >      > Faixa=$(case $Nota in *0[01][0-9]%) echo 000 ;; 
*0[23][0-9]%) echo
        020 ;;
         >      >     *0[45][0-9]%) echo
         >      >      >     040 ;; *0[56][0-9]%) echo 060 ;;
         >      >      >      > *0[78][0-9]%) echo 080 ;; *) echo 100;; esac) # 
Se seu bash for
        anterior ao
         >     4.0, deve ser
         >      >      >     adicionado um abre parênteses antes
         >      >      >      > de cada asterisco
         >      >      >      >
         >      >      >      > notify-send -i gpm-battery-$Faixa $Nota # a 
opção -i especifica o ícone
         >     (/usr/share/icons)
         >      >      >      >
         >      >      >      > MrBiTs me desculpe, mas é um codeguinho 
piquinininho e colocar num
        site toma muito
         >      >     tempo e se
         >      >      >     toma tempo não tenho tempo de
         >      >      >      > tomar chope. ;)
         >      >      >      >
         >      >      >
         >      >      >     A bateria do meu notebook também não sai dos 100%. 
É só deixá-lo ligado
        na fonte :)
         >      >      >
         >      >      >     Entre colocar código em pastebin e ir tomar chope, 
vá tomar chope.
        Homem nenhum no
         >     mundo
         >      >     deveria
         >      >      >     ser privado de seu direito divino
         >      >      >     de tomar um chope.
         >      >      >
         >      >      >     De mais a mais, você manda e-mails em plaintext, 
então prejudica menos
        a leitura.
         >      >      >
         >      >      >     - --
         >      >      >     echo
         >      >      >
         >      >
         >
          
920680245503158263821824753325__972325831728150312428342077412__537729420364909318736253880971__145983128276953696631956862757__408858710644955909208239222408__534030331747172248238293509539__472164571738870818862971439246__497991147436431430964603600458__631758354381402352368220521740__203494788796697543569807851284__795072334480481413675418412856__581412376640379241258356436205__061541557366641602992820546646__995466P
         >      >      >     | dc
         >      >      >
         >      >      >     -----BEGIN PGP SIGNATURE-----
         >      >      >     Version: GnuPG v1
         >      >      >     Comment: Using GnuPG with Thunderbird - 
http://www.enigmail.net/
         >      >      >
         >      >      >     
iQEcBAEBCAAGBQJUrmhBAAoJEG7IGP__wrPKWrxnIH/22k43muwUyw/__ayLsx8xAOqS
         >      >      >     
LyVmowatOY8TK8uhLMbcFqW3bMYH+__kd5E7OqACfDFbXDNFSCbkNhrgBdswq__VHHVA
         >      >      >     
LmhE8YYPv1a0j6k5i90uTlnHJY6hHh__0r6tGwHpwV/__hEnFFkz3JkmQIiRCUR5yYEP
         >      >      >     
KBcYRoPk0l2qe0vm8IiYUS+__57nnI4kLqPqyEaT8FENV7/__GSPqsN9b8JlSmurDYGP
         >      >      >     
VODSe5vUGi0BmkQ7XjwhiGw2Wsc3y2__QEZvOKzeEWl1Uvk41EzwFN20skoq2M__IWtw
         >      >      >     
Xu8V9xKluonemPqi0RQA9Zk0/__egcG4VFFauXm0tzmnksBiB9zc/Z0v+__MJBWagWA=
         >      >      >     =mwOk
         >      >      >     -----END PGP SIGNATURE-----
         >      >      >
         >      >      >
         >      >      >
         >      >      >
         >      >
         >
          
------------------------------__------------------------------__------------------------------__----------
         >      >      > Enviado por: "Julio C. Neves" <address@hidden
        <mailto:address@hidden> <mailto:address@hidden <mailto:address@hidden>>
         >     <mailto:address@hidden <mailto:address@hidden>
        <mailto:address@hidden <mailto:address@hidden>>__>>
         >      >
         >      >
         >      >     ------------------------------__------
         >      >
         >      >     ------------------------------__------
         >      >
         >      >     
------------------------------__------------------------------__---------
         >      >     Esta lista não admite a abordagem de outras liguagens de 
programação, como
        perl, C etc. Quem
         >      >     insistir em não seguir esta regra será moderado sem 
prévio aviso.
         >      >     
------------------------------__------------------------------__---------
         >      >     Sair da lista: 
shell-script-unsubscribe@__yahoogrupos.com.br
        <mailto:address@hidden>
         >     <mailto:address@hidden
        <mailto:address@hidden>__>
         >      >     <mailto:address@hidden
        <mailto:address@hidden>
         >     <mailto:address@hidden
        <mailto:address@hidden>__>>
         >      >     
------------------------------__------------------------------__---------
         >      >     Esta lista é moderada de acordo com o previsto em
        http://www.listas-discussao.__cjb.net 
<http://www.listas-discussao.cjb.net>
         >      >     
------------------------------__------------------------------__---------
         >      >     Servidor Newsgroup da lista: news.gmane.org 
<http://news.gmane.org>
        <http://news.gmane.org> <http://news.gmane.org>
         >      >     Grupo: gmane.org.user-groups.__programming.shell.brazil
         >      >
         >      >
         >      >     ------------------------------__------
         >      >
         >      >     Links do Yahoo Grupos
         >      >
         >      >
         >      >
         >      >
         >
          
------------------------------__------------------------------__------------------------------__----------
         >      > Enviado por: "Julio C. Neves" <address@hidden
        <mailto:address@hidden> <mailto:address@hidden 
<mailto:address@hidden>>__>
         >
         >
         >     ------------------------------__------
         >
         >     ------------------------------__------
         >
         >
         >
         >
         >
         >
        
------------------------------__------------------------------__------------------------------__----------
         > Enviado por: "Julio C. Neves" <address@hidden 
<mailto:address@hidden>>


        ------------------------------__------



----------------------------------------------------------------------------------------------------
Enviado por: "Julio C. Neves" <address@hidden>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]