是否可以迭代一个字母列表,如下所示:
aaaa, aaab, ..., aaaz, aaba, aabb, ..., aabz, ..., zzzy, zzzz
我知道迭代字母表的语法:
for i in {a..z}
但无法找到扩展版本的方法...
提前致谢
答案 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