Script Shell - value too great for base

Olá, tive uma necessidade de efetuar um script e utilizar variáveis dia, mes e ano.


Porém, tudo funcionava corretamente, até que o usuário final (que utilizava o script) me reportou, "olha seu script não tá está funcionando, dá a seguinte mensagem "value too great for base".


Então pensei, que coisa, se tudo estava funcionando corretamente, como que pode parar derrepente!!!


Depois de "googlar" encontrei a solução já feita por alguns colegas do mundo do shell.




Todo numero que inicializa com 0 (zero) e shell entende como octal e dá a mensagem de erro "value too great for base". Exemplo: 01, 02, 03, 0N.


Então a correção aplicada foi:


Script Antigo:


#!/bin/bash
#variaveis

dia=`date +%d`
mes=`date +%m`
ano=`date +%Y`


calculo=$(($dia+$mes))


echo $calculo





Script Atual:


#!/bin/bash
#variaveis

dia=`date +%d | sed s/^0//`
mes=`date +%m | sed s/^0//`
ano=`date +%Y`


calculo=$(($dia+$mes))


echo $calculo


Solução: aplicar o filtro `sed s/^0//`, onde tudo que iniciar com 0 (^0) vai ser trocado por "" (vazio).


Conclusão: Shell realmente não se aprende na escola.


Dúvidas estou a disposição.



Comentários

Postagens mais visitadas