在 bash 循环中迭代数字的异常增量步进模式
Iterating an unusual incremental stepping pattern of numbers in a bash loop
我有一些 ID 遵循这种不寻常的增量步进模式,如下所示:
eg600100.etc
eg600101.etc
eg600102.etc
...
eg600109.etc
eg600200.etc
...
eg600209.etc
eg600300.etc
...
eg600909.etc
eg601000.etc
eg601001.etc
...
eg601009.etc
eg601100.etc
...
eg601200.etc
...
eg601909.etc
据我所知,它是这样分解的:
60|01-19|00-09
我想构建一个循环,可以递增地迭代每个潜在 ID 直到范围的末尾(即 601909)。
如何将数字分成这 3 个部分以管理循环的异常步进?
我看过 seq
,但我不知道如何让它接受这里的异常步进,这样它就不会给我增量之间的数字,这些数字不作为潜在 ID 存在以上。
#!/bin/bash
for id in $(seq -w 601909)
do
echo "Testing current ID, which is eg$id.etc"
done
有什么想法吗?
尝试使用大括号扩展:
printf %s\n eg60{01..19}{00..09}.etc >file
运行 这是一个测试,但您可以迭代这样的扩展:
for id in eg60{01..19}{00..09}.etc; do echo Testing ID: $id; done
我有一些 ID 遵循这种不寻常的增量步进模式,如下所示:
eg600100.etc
eg600101.etc
eg600102.etc
...
eg600109.etc
eg600200.etc
...
eg600209.etc
eg600300.etc
...
eg600909.etc
eg601000.etc
eg601001.etc
...
eg601009.etc
eg601100.etc
...
eg601200.etc
...
eg601909.etc
据我所知,它是这样分解的:
60|01-19|00-09
我想构建一个循环,可以递增地迭代每个潜在 ID 直到范围的末尾(即 601909)。
如何将数字分成这 3 个部分以管理循环的异常步进?
我看过 seq
,但我不知道如何让它接受这里的异常步进,这样它就不会给我增量之间的数字,这些数字不作为潜在 ID 存在以上。
#!/bin/bash
for id in $(seq -w 601909)
do
echo "Testing current ID, which is eg$id.etc"
done
有什么想法吗?
尝试使用大括号扩展:
printf %s\n eg60{01..19}{00..09}.etc >file
运行 这是一个测试,但您可以迭代这样的扩展:
for id in eg60{01..19}{00..09}.etc; do echo Testing ID: $id; done