for循环,带有用于起始值和结束值的两位数变量

时间:2019-12-10 15:51:33

标签: bash for-loop unix

我需要使用带有2位数字变量的for循环来定义循环的开始和结束值,例如:lstart = 00和lend = 99。 这将用于为数字字符串(如“ 56784XX”)打印100个数字序列,其中XX的末尾将从lstart值(即00)开始,并以lend值(即99)结束。 因此,输出应类似于:

5678400
5678401
5678402
5678403
.
.
.
.
5678499

for循环如下:

for (( i = $lstart; i <= $lend; i++ )); do echo "56784${i}"; done

将显示前10个值,例如:

567841
567842
567843
.
.
.
567849

即缺少0位数,这是我不希望的。 另外,这不起作用:

for i in {$lstart..$lend}; do echo "56784${i}"; done

可以请您帮忙吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

使用printf代替echo

for i in 1 2 3; do
    printf "56784%02d\n" $i
done

给予:

5678401
5678402
5678403

注意::尽管echo默认以换行符\n终止,而printf则没有,因此您必须自己指定。