【问题标题】:Iterate over letters in a for loop在 for 循环中迭代字母
【发布时间】:2014-08-08 09:43:30
【问题描述】:

是否可以遍历字母列表,如下:

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

我知道遍历字母表的语法:

for i in {a..z} 

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

提前致谢

【问题讨论】:

标签: bash for-loop


【解决方案1】:

我其实不太了解 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

【讨论】:

    【解决方案2】:

    是的,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 中的大括号扩展。您可以通过一组嵌套循环来满足您的需求,这些循环具有不同级别的前缀,用于您的扩展设置。

    【讨论】:

      【解决方案3】:

      你可以使用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。

      【讨论】:

      • 请记住,这是打印 26^4 行,但可能需要一段时间,看起来像是挂了
      猜你喜欢
      • 2016-01-14
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多