[SHELL SCRIPT]

1. [SHELL SCRIPT]

Leonardo Kulik Perle
leokulik

(usa Debian)

Enviado em 17/09/2014 - 15:36h

Boa tarde, Pessoal.
Podem me ajudar?
Preciso criar um programa que leia um numero positivo e apresente em coluna.
Ex:
Digite numero: 1024

4
2
0
1


__________________________________

Eu consegui com awk, e lógica.
Mas preciso também, fazer isto divindo por 10.

1024/10 = 102,4 (apresenta o 4)
102/10 = 10,2 (apresenta o 2)
10/10 = 1,0 (apresenta o 0)
1/10 = 0,1 (apresenta o 1)

Sei que deve-se usar o scale=1; pra listar um número depois do ponto.
Mas não consigo pegar eles pra imprimir na tela.

Podem me ajudar??


  


2. Re: [SHELL SCRIPT]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/09/2014 - 15:47h

Use o cut:


cut -d, -f1



3. Re: [SHELL SCRIPT]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/09/2014 - 14:27h

Normalmente, eu não gosto de chamar comandos externos quando dá para fazer somente com comandos internos do shell. Fazer com chamadas sucessivas a cut, como se sugeriu, seria uma temeridade.

str=`ls -la`  # mais de 19kiB no meu diretório home
offset=${#str}
while (( $offset-- > 0 )); do
echo ${str:$offset:1}
done


No entanto, isso se mostrou bem menos eficiente (>4s contra <0,1s!) do que o equivalente com awk.

str=`ls -la`  # mais de 19kiB no meu diretório home
awk '
BEGIN {
str=ARGV[1]
offset=length(str)
while(offset > 0){
print substr(str, offset, 1)
offset--
}
}
' "$str"


Você precima mesmo fazer dividindo? A ideia soa meio antiproducente, a não ser que você seja obrigado a fazer com bc.


4. Re: [SHELL SCRIPT]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 23/09/2014 - 00:09h

Veja se usando o módulo (%) ajuda:


#!/bin/bash
echo "Digite um numero: "
read NUM
i=1
while [ $i -le ${#NUM} ];
do
echo $(( ${NUM:${#NUM}-$i:1} % 10 ))
i=$((i+1))
done



5. Re: [SHELL SCRIPT]

Fernando
phoemur

(usa FreeBSD)

Enviado em 24/09/2014 - 00:29h

python

python -c "print('\n'.join(str(input('Digite um número:'))[::-1]))"


ou

bash

read -p "Digite um número:" NUMERO && rev <<< $NUMERO | sed -e 's/./&\n/g'


sem sed e herestrings(prefiro essa)

read -p "Digite um número:" NUMERO && echo $NUMERO | rev | fold -w1







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts