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>>__.
>
>