Pular para o conteúdo

Como usar integer e strings em script? [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Como usar integer e strings em script? [RESOLVIDO]

Enviado em 15/12/2008 - 09:39h

Sabe aquele dia que voce tem uma ideia de um script inutil mais voce quer fazer assim mesmo, so pra praticar e acaba se complicando todo?
Pois e eu quero fazer um relogio que mostra as horas em Hexadecimal e horario normal, com o relogio nao tem problema ja esta pronto, so que quando eu coloquei para rodar eu nao gostei de uma coisa, como o relogio normal os numeros sao strings eles sao contados como 01, 02, 03, e assim por diante e os hexadecimais sao integer eles saem como 1,2,3, etc que quero que os numeros menores que 10 sejam com o 0 antes deles. aqui vai o codigo:

#!/bin/bash
horas=$(date +%H)
hexhoras=$(echo 'obase=16; ibase=10; '$horas | bc)

minutos=$(date +%M)
hexminutos=$(echo 'obase=16; ibase=10; '$minutos | bc)

Segundos=$(date +%S)
hexSegundos=$(echo 'obase=16; ibase=10; '$Segundos | bc)

tudo=$(echo "$hexhoras:$hexminutos:$hexSegundos")
tudo2=$(echo "$horas:$minutos:$Segundos")
echo $tudo
echo $tudo2

e aqui uma tentativa que falhou:

#!/bin/bash
horas=$(date +%H)
hexhoras=$(echo 'obase=16; ibase=10; '$horas | bc)
if [ $hexhoras -lt "10" ];then
let hexhoras=$(echo "0$hexhoras");
fi
minutos=$(date +%M)
hexminutos=$(echo 'obase=16; ibase=10; '$minutos | bc)
if [ $hexminutos -lt "10" ];then
let hexminutos=$(echo "0$hexminutos");
fi
Segundos=$(date +%S)
hexSegundos=$(echo 'obase=16; ibase=10; '$Segundos | bc)
if [ $hexSegundos -lt "10" ];then
let hexSegundos=$(echo "0$hexSegundos");
fi
tudo=$(echo "$hexhoras:$hexminutos:$hexSegundos")
tudo2=$(echo "$horas:$minutos:$Segundos")
echo $tudo
echo $tudo2

Nos numeros acima de 9 aparecem entre A e F
3B: integer expression expected
16:25:3B Hexa
22:37:59 Normal

nos numeros menores que 10 aparece assim como o que estou rodando agora:

16:26:2 Hexa
22:38:02 Normal

Alguem pode me iluminar aqui? oque eu posso fazer pra corrigir isso?

Responder tópico

2. Solução

Enviado em 15/12/2008 - 11:20h

Abaixo está o código com algumas alterações que eu fiz para que ele imprimisse a hora como tu queria, espero ter ajudado, pelo menos aqui funcionou, qualquer coisa é so falar.

#!/bin/bash
horas=$(date +%H)
hexhoras=$(echo 'obase=16; ibase=10; '$horas | bc)
echo $hexhoras
if [[ $hexhoras = [A-F] ]];then
hexhoras=$(echo "0$hexhoras");
fi
minutos=$(date +%M)
hexminutos=$(echo 'obase=16; ibase=10; '$minutos | bc)
if [[ $hexminutos = [A-F] ]];then
hexminutos=$(echo "0$hexminutos");
fi
Segundos=$(date +%S)
hexSegundos=$(echo 'obase=16; ibase=10; '$Segundos | bc)
if [[ $hexSegundos = [A-F] ]];then
hexSegundos=$(echo "0$hexSegundos");
fi
tudo=$(echo "$hexhoras:$hexminutos:$hexSegundos")
tudo2=$(echo "$horas:$minutos:$Segundos")
echo $tudo
echo $tudo2

3. Arrebentou

Enviado em 15/12/2008 - 22:33h

Foi isso mesmo, so precisei retirar a linha echo $hexahora antes da condicao if e pronto...
E olha que coincidencia nosso sobrenome e o mesmo Medeiros... Valeu !

4. Re: Como usar integer e strings em script? [RESOLVIDO]

Enviado em 16/12/2008 - 08:13h

Ah, desculpa, o echo era só pra teste da entrada. Qualquer coisa estamos aí, valeu tb.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder