如果我尝试打印长度为6位或更少的整数,一切都很完美:
实施例
for i in $(seq 123450 123451); do printf "%7.0f\n" $i; done
123450
123451
但是,当整数长度为7位或更多时,数字的最后一位数字输出为“0”:
实施例
for i in $(seq 1234560 1234561); do printf "%7.0f\n" $i; done
1234560
1234560
问题:我遇到什么问题以及如何使用“长”整数?
答案 0 :(得分:2)
默认情况下,seq
以%g格式打印输出:
$ seq 1234560 1234561
1.23456e+06
1.23456e+06
所以请改用seq -f "%7.0f"
:
$ seq -f "%7.0f" 1234560 1234561
1234560
1234561
或只是seq -f "%.0f"
:
$ seq -f "%.0f" 1234560 1234561
1234560
1234561
答案 1 :(得分:1)
对于shell,一切都是字符串,最好避免使用浮点转换和计算,并留到bc
(1)。这应该有效:
for i in $(seq 123450 123451); do printf "%s\n" $i; done