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 13:58:18 -0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.3.0

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 [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>24 a 28/11/14*
Dou treinamento de /Shell/ em qualquer cidade.
Para mais detalhes, me mande um e-mail <mailto:address@hidden>.


Em 8 de janeiro de 2015 16:55, Paulo Bettega address@hidden
<mailto:address@hidden> [shell-script] <address@hidden
<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>
    [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 <mailto:address@hidden>>
     > [shell-script]" <address@hidden <mailto:address@hidden>
    <mailto:address@hidden <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>>
     >     [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>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>>>.
     >      >
     >      >
     >      > 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>>>
     >      > [shell-script] <address@hidden
    <mailto:address@hidden> <mailto:address@hidden
    <mailto:address@hidden>>
     >     <mailto:address@hidden <mailto:address@hidden>
    <mailto:address@hidden <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
     >      >
     >
      
920680245503158263821824753325972325831728150312428342077412537729420364909318736253880971145983128276953696631956862757408858710644955909208239222408534030331747172248238293509539472164571738870818862971439246497991147436431430964603600458631758354381402352368220521740203494788796697543569807851284795072334480481413675418412856581412376640379241258356436205061541557366641602992820546646995466P
     >      >     | dc
     >      >
     >      >     -----BEGIN PGP SIGNATURE-----
     >      >     Version: GnuPG v1
     >      >     Comment: Using GnuPG with Thunderbird - 
http://www.enigmail.net/
     >      >
     >      >     
iQEcBAEBCAAGBQJUrmhBAAoJEG7IGPwrPKWrxnIH/22k43muwUyw/ayLsx8xAOqS
     >      >     
LyVmowatOY8TK8uhLMbcFqW3bMYH+kd5E7OqACfDFbXDNFSCbkNhrgBdswqVHHVA
     >      >     
LmhE8YYPv1a0j6k5i90uTlnHJY6hHh0r6tGwHpwV/hEnFFkz3JkmQIiRCUR5yYEP
     >      >     
KBcYRoPk0l2qe0vm8IiYUS+57nnI4kLqPqyEaT8FENV7/GSPqsN9b8JlSmurDYGP
     >      >     
VODSe5vUGi0BmkQ7XjwhiGw2Wsc3y2QEZvOKzeEWl1Uvk41EzwFN20skoq2MIWtw
     >      >     
Xu8V9xKluonemPqi0RQA9Zk0/egcG4VFFauXm0tzmnksBiB9zc/Z0v+MJBWagWA=
     >      >     =mwOk
     >      >     -----END PGP SIGNATURE-----
     >      >
     >      >
     >      >
     >      >
     >
      
----------------------------------------------------------------------------------------------------
     >      > Enviado por: "Julio C. Neves" <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: 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
     >     ---------------------------------------------------------------------
     >     Servidor Newsgroup da lista: 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>>


    ------------------------------------

    ------------------------------------

    ---------------------------------------------------------------------
    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: address@hidden
    <mailto:address@hidden>
    ---------------------------------------------------------------------
    Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
    ---------------------------------------------------------------------
    Servidor Newsgroup da lista: 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>


reply via email to

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