【问题标题】:for loop with 2-digit variables for start and end values [duplicate]用于开始和结束值的 2 位变量的 for 循环 [重复]
【发布时间】:2020-04-03 20:42:29
【问题描述】:

我需要使用带有 2 位变量的 for 循环来定义循环的开始值和结束值,例如:lstart=00 和lend=99。 这将用于为“56784XX”之类的数字字符串打印一个由 100 个数字组成的序列,其中最后的 XX 将从 lstart 值开始,即 00,并以借出值结束,即 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

您能帮我解决一下我的要求吗?

谢谢。

【问题讨论】:

    标签: bash for-loop unix


    【解决方案1】:

    使用printf 代替echo

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

    给予:

    5678401
    5678402
    5678403
    

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

    【讨论】:

    • 好主意,但是 $lstart 和 $lend 可能分别是 000、999 或 0、9 或 0000、9999 等,所以这个 %02 在 printf 中不是恒定的,可能需要为 %03、%01 或 %04 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多