Use printf
em vez de echo para formatá-lo:
printf %0.1f\n $p
Saída:
$ p=0.1; k=2
$ while [ $p \< 1 ]; do printf %0.1f\n $p ; p=$(echo "scale=2; $p*$k" | bc); done
0.1
0.2
0.4
0.8
Quando eu corro
p=0.1
k=2
while [ $p \< 1 ]
do
echo $p
p=$(echo "scale=2; $p*$k" | bc)
done
eu tenho esse resultado
0.1
.2
.4
.8
O que posso fazer para ter 0,1, 0,2, 0,4 e 0,8?
Use printf
em vez de echo para formatá-lo:
printf %0.1f\n $p
Saída:
$ p=0.1; k=2
$ while [ $p \< 1 ]; do printf %0.1f\n $p ; p=$(echo "scale=2; $p*$k" | bc); done
0.1
0.2
0.4
0.8
Eu usaria seq e printf para resolver o meu problema. verifique isso:
for i in $(seq .1 .2 1); do printf "%0.1f\n" "$i"; done
Talvez isso ajude você a continuar.