【问题标题】:shellscript iterate through letters [duplicate]shellscript遍历字母[重复]
【发布时间】:2023-03-25 08:12:01
【问题描述】:

我需要在 shellscript 中按字母顺序从 c 迭代到 k,下面的尝试失败了,我该如何正确操作?

for((i='c';i

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    这至少可以在 bash 中使用:

    for i in {c..k}
    

    【讨论】:

    • 有没有办法在 shell(不是 bash)中做到这一点?
    • @JakubP:什么是“shell(不是 bash)”?科恩贝壳? ?鱼?破折号?
    • 我的意思是 shell 作为 sh。搜索 shell 脚本总是一个问题,因为我没有找到任何特定的名称,例如 bash、ksh、zsh - 这些都是独一无二的。而当一种类型的外壳,那么它是令人困惑的:-)
    • @JakubP:没有“sh”。有像我列出的那些实现。 sh 不是一个具体的东西,而是一组相关的东西。
    【解决方案2】:

    这个在我的 shell (Bash 3.0+) 中工作:

    for c in {c..k}
    do
      echo $c
    done
    

    【讨论】:

    • 这来自 {a..z} 而问题要求 {c..k}。
    • 是的,我知道。只需更改为 c..k
    • 我想知道为什么我之前发布的正确答案没有被接受。那好吧。我已经为你编辑了你的答案。
    • 有没有办法在 shell(不是 bash)中做到这一点?
    【解决方案3】:

    鉴于您不是专门要求 bashism,这里有一些没有它们的替代方案。

    简单:

    for c in c d e f g h i j k; do
        echo $c
    done
    

    避免列出所有字符的需要:

    s=$(printf %d "'c")
    e=$(printf %d "'k")
    i=$s
    while [ $i -le $e ]; do
        c=$(printf \\$(printf %o $i))
        echo $c
        i=$((i+1))
    done
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 2016-03-26
      • 2012-04-02
      • 2019-02-16
      相关资源
      最近更新 更多