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: Alfredo Casanova
Subject: Re: [shell-script] CURIOSIDADES: Discussão sobre ShellScript no 4Chan
Date: Tue, 13 Jan 2015 00:21:39 +0000

Adicionei um comando pra ajustar o brilho do monitor de acordo com o nivel de bateria, assim dá uma economizada

shopt -s extglob
#Nota=$(upower -i $(upower -e | grep BAT) | grep percentage | grep -Eo "[0-9]*%")
Faixa=$(case $Nota in
    ?([01])[0-9]%) echo 000; xbacklight -set 10 ;;
    [23][0-9]%) echo 020; xbacklight -set 20 ;;
    [45][0-9]%) echo 040; xbacklight -set 40 ;;
    [56][0-9]%) echo 060; xbacklight -set 60 ;;
    [78][0-9]%) echo 080; xbacklight -set 80 ;;
    *) echo 100; xbacklight -set 100;;
esac) 

On Mon Jan 12 2015 at 3:29:09 PM Paulo Bettega address@hidden [shell-script] <address@hidden> wrote:
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.br <mailto:shell-script@yahoogrupos.com.br>> 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.br> [shell-script] <address@hidden.br
>     <mailto:shell-script@yahoogrupos.com.br>> 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.br>
>          > <mailto:address@hidden.__br <mailto:address@hidden.br>> [shell-script]
>         <address@hidden.__br <mailto:shell-script@yahoogrupos.com.br>
>          > <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>>>
>         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.br> <mailto:address@hidden.__br
>         <mailto:address@hidden.br>>
>          >     <mailto:address@hidden.__br <mailto:address@hidden.br>
>         <mailto:address@hidden.__br <mailto:address@hidden.br>>>
>          >      > [shell-script]" <address@hidden.__br
>         <mailto:shell-script@yahoogrupos.com.br> <mailto:shell-script@__yahoogrupos.com.br
>         <mailto:shell-script@yahoogrupos.com.br>>
>          >     <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>
>         <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>>>> 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:shell-script@yahoogrupos.com.br>
>          >     <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>>
>         <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>
>          >     <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>>>
>          >      >     <mailto:shell-script@__yahoogrupos.com.br
>         <mailto:shell-script@yahoogrupos.com.br> <mailto:shell-script@__yahoogrupos.com.br
>         <mailto:shell-script@yahoogrupos.com.br>>
>          >     <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>
>         <mailto:shell-script@__yahoogrupos.com.br <mailto:shell-script@yahoogrupos.com.br>>>>> 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:shell-script-address@hidden>
>          >     <mailto:shell-script-__address@hidden
>         <mailto:shell-script-address@hidden>__>
>          >      >     <mailto:shell-script-__address@hidden
>         <mailto:shell-script-address@hidden>
>          >     <mailto:shell-script-__address@hidden
>         <mailto:shell-script-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>


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

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

---------------------------------------------------------------------
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
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil


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

Links do Yahoo Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    shell-script-unsubscribe@yahoogrupos.com.br

<*> O uso que você faz do Yahoo Grupos está sujeito aos:
    https://info.yahoo.com/legal/br/yahoo/utos/terms/



reply via email to

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