imprimir meu for [RESOLVIDO]

1. imprimir meu for [RESOLVIDO]

Eduardo Neto
eduardonetoh

(usa Outra)

Enviado em 13/11/2013 - 17:10h

Alguem pode me ajudar com isso? eh o seguinte.. preciso que o valor que eu digite seja impresso de acordo com os valores que mencionei no case..

exemplo:
o valor digitado foi: 12adc
o valor impresso: 0001 0010 1010 1101 1100

Obs: sem que eu preciso fazer múltiplos case..
no mais obrigado!


#! /bin/bash

echo "--:: PROJETO INTEGRADOR ::--"
echo "--:: CONVERSAO DE BASE HEXA PARA BIN ::--"
echo ""
echo "Autor: Eduardo Neto"
echo " Jadson Reis"
echo ""
echo "Digite um valor equivalente a Hexadecimal: "
read hexa

v1=$(echo $hexa| cut -c1)

i=0
for i in $v1
do

case $v1 in

0) a=0000 ;;
1) a=0001 ;;
2) a=0010 ;;
3) a=0011 ;;
4) a=0100 ;;
5) a=0101 ;;
6) a=0110 ;;
7) a=0111 ;;
8) a=1000 ;;
9) a=1001 ;;
A|a) a=1010 ;;
B|b) a=1011 ;;
C|c) a=1100 ;;
D|d) a=1101 ;;
E|e) a=1110 ;;
F|f) a=1111 ;;
G|g) a="xx" ;;
H|h) a="xx" ;;
I|i) a="xx" ;;
J|j) a="xx" ;;
L|l) a="xx" ;;
M|m) a="xx" ;;
N|n) a="xx" ;;
O|o) a="xx" ;;
P|p) a="xx" ;;
Q|q) a="xx" ;;
R|r) a="xx" ;;
S|s) a="xx" ;;
T|t) a="xx" ;;
U|u) a="xx" ;;
V|v) a="xx" ;;
X|x) a="xx" ;;
Z|z) a="xx" ;;
W|w) a="xx" ;;
K|k) a="xx" ;;
Y|y) a="xx" ;;
"") a="xx" ;;
*) a="xx";;

esac
done

if [ $a == "xx" ]; then

echo "O valor digitado não corresponde a um valor Hexadecimal"
echo ""
echo ""

else

echo "O valor hexadecimal digitado em Binario eh: $a"
echo ""
echo ""

fi


  


2. Use o bc

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 13/11/2013 - 23:02h

echo "ibase=16; obase=2; 12ADC" | bc
10010101011011100




3. Re: imprimir meu for [RESOLVIDO]

Eduardo Neto
eduardonetoh

(usa Outra)

Enviado em 13/11/2013 - 23:54h

tem que ser manual msm.. sem função BC ou DC.. se fosse assim ja tava pronto.. em 8 linhas apenas... kk! msm assim obrigado!


4. Re: imprimir meu for [RESOLVIDO]

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 14/11/2013 - 10:10h

eduardonetoh escreveu:

tem que ser manual msm.. sem função BC ou DC.. se fosse assim ja tava pronto.. em 8 linhas apenas... kk! msm assim obrigado!


Tenta assim =):


#!/bin/bash
while [ $# -ne 0 ]; do
bin=''
hex=$(printf "%d" 0x$1)

while ((hex != 0)); do
(( bit = hex % 2 ))
(( hex = hex / 2 ))
bin=${bit}$bin
done

echo "$bin"
shift
done
$ ./test.sh 12ADC 1F C0CA
10010101011011100
11111
1100000011001010



5. Re: imprimir meu for [RESOLVIDO]

Eduardo Neto
eduardonetoh

(usa Outra)

Enviado em 14/11/2013 - 15:04h

coloca isso no meu codigo.. quero ver como fica!


6. Re: imprimir meu for [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 14/11/2013 - 17:46h

Esse trecho:

G|g) a="xx" ;;
H|h) a="xx" ;;
I|i) a="xx" ;;
J|j) a="xx" ;;
L|l) a="xx" ;;
M|m) a="xx" ;;
N|n) a="xx" ;;
O|o) a="xx" ;;
P|p) a="xx" ;;
Q|q) a="xx" ;;
R|r) a="xx" ;;
S|s) a="xx" ;;
T|t) a="xx" ;;
U|u) a="xx" ;;
V|v) a="xx" ;;
X|x) a="xx" ;;
Z|z) a="xx" ;;
W|w) a="xx" ;;
K|k) a="xx" ;;
Y|y) a="xx" ;;
"") a="xx" ;;

não é necessário, pois vc colocando apenas:


*) aa="xx";;


já resolve o seu problema! (Isso eu ja tinha feito em sua penúltima dúvida).

O script do @smarcell já resolve tudo numa linha de comando só, sem precisar a execução do "read". Recomendo utilizá-lo :-)


7. Re: imprimir meu for [RESOLVIDO]

Eduardo Neto
eduardonetoh

(usa Outra)

Enviado em 18/11/2013 - 02:27h

#! /bin/bash

echo "--:: PROJETO INTEGRADOR ::--"
echo "--:: CONVERSAO DE BASE HEXA PARA BIN ::--"
echo "--:: CONVERSÃO MAXIMA 07 (sete) DIGITOS ::--"
echo ""
echo "Autor: Eduardo Neto"
echo " Jadson Reis"
echo ""
echo "Digite um valor equivalente a Hexadecimal: "
read hexa

v[6]=$(echo $hexa | cut -c1)
v[5]=$(echo $hexa | cut -c2)
v[4]=$(echo $hexa | cut -c3)
v[3]=$(echo $hexa | cut -c4)
v[2]=$(echo $hexa | cut -c5)
v[1]=$(echo $hexa | cut -c6)
v[0]=$(echo $hexa | cut -c7)

i=0
while [ $i -le 6 ]; do

case ${v[$i]} in

0) v[$i]=0000 ;;
1) v[$i]=0001 ;;
2) v[$i]=0010 ;;
3) v[$i]=0011 ;;
4) v[$i]=0100 ;;
5) v[$i]=0101 ;;
6) v[$i]=0110 ;;
7) v[$i]=0111 ;;
8) v[$i]=1000 ;;
9) v[$i]=1001 ;;
A|a) v[$i]=1010 ;;
B|b) v[$i]=1011 ;;
C|c) v[$i]=1100 ;;
D|d) v[$i]=1101 ;;
E|e) v[$i]=1110 ;;
F|f) v[$i]=1111 ;;
"") echo "" ;;
*) echo "O valor digitado nao corresponde a um valor Hexadecimal" ; exit 1;;

esac

let i++
done
echo -n "O valor hexadecimal digitado em Binario eh: "

i=0
while [ $i -le 6 ];
do
echo -n ${v[6-$i]}
let i++
done
echo ""
echo "Para uma nova consulta execute novamente o programa !!"
echo ""


8. Re: imprimir meu for [RESOLVIDO]

Eduardo Neto
eduardonetoh

(usa Outra)

Enviado em 18/11/2013 - 02:27h

resolvido.. nao tirei um 10 no projeto mais fiquei com 9.. vlw galera.. pela força!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts