Como usar integer e strings em script? [RESOLVIDO]

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

M4iir1c10
M4iir1c10

(usa Arch Linux)

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?


  


2. Solução

Thiarles Medeiros
thiarlesmedeiros

(usa Ubuntu)

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

M4iir1c10
M4iir1c10

(usa Arch Linux)

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]

Thiarles Medeiros
thiarlesmedeiros

(usa Ubuntu)

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

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


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

Minduim Power
minduim

(usa Ubuntu)

Enviado em 08/04/2009 - 17:28h

Por favor você sabe me dizer qual função converte string para integer ou float?
Obrigado pela atenção.
http://www.vivaolinux.com.br/topico/Shell-Script/Como-converter-string-para-float-e-integer






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts