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>