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