迭代for循环中的字母

时间:2014-06-18 07:41:58

标签: bash for-loop

是否可以迭代一个字母列表,如下所示:

aaaa, aaab, ..., aaaz, aaba, aabb, ..., aabz, ..., zzzy, zzzz

我知道迭代字母表的语法:

for i in {a..z} 

但无法找到扩展版本的方法...

提前致谢

3 个答案:

答案 0 :(得分:5)

您可以使用brace expansion

echo {a..z}{a..z}{a..z}{a..z}

在循环中使用它:

for i in {a..z}{a..z}{a..z}{a..z}; do
    echo $i
done

它会产生:

aaaa
aaab
aaac
aaad
aaae
...
zzzv
zzzw
zzzx
zzzy
zzzz

您可以阅读有关组合和嵌套大括号扩展here的更多信息。

答案 1 :(得分:1)

是的,BASH并不关心序列中包含的内容,只要您给出序列即可。

for i in ducks geese swans; do echo $i; done
ducks
geese
swans

通过大括号扩展进一步构建,你只需要处理你的大括号语句:

for i in aaa{a..z}; do echo $i; done
aaaa
aaab
aaac
aaad
aaae
aaaf
aaag
aaah
aaai
aaaj
aaak
...

看看男子狂欢中的大括号扩展。您可以通过一组嵌套循环来满足您的需求,这些循环具有不同的扩展设置前缀级别。

答案 2 :(得分:0)

我其实不太了解bash,但不会那么有效吗?

// Pseudocode
for i in {a..z}
for j in {a..z}
for k in {a..z}
for l in {a..z}
echo $i$j$k$l