【发布时间】:2014-08-08 09:43:30
【问题描述】:
是否可以遍历字母列表,如下:
aaaa, aaab, ..., aaaz, aaba, aabb, ..., aabz, ..., zzzy, zzzz
我知道遍历字母表的语法:
for i in {a..z}
但无法找到扩展版本的方法...
提前致谢
【问题讨论】:
是否可以遍历字母列表,如下:
aaaa, aaab, ..., aaaz, aaba, aabb, ..., aabz, ..., zzzy, zzzz
我知道遍历字母表的语法:
for i in {a..z}
但无法找到扩展版本的方法...
提前致谢
【问题讨论】:
我其实不太了解 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
【讨论】:
是的,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
...
看看 man bash 中的大括号扩展。您可以通过一组嵌套循环来满足您的需求,这些循环具有不同级别的前缀,用于您的扩展设置。
【讨论】:
你可以使用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。
【讨论】: