【问题标题】:How to write a for loop to perform an operation N times in the ash shell?如何编写一个for循环在ash shell中执行N次操作?
【发布时间】:2022-09-28 15:17:52
【问题描述】:

我希望在具有/bin/ash shell 的 Alpine Linux docker 容器中运行给定次数的命令。

在 Bash 中,这将是

bash-3.2$ for i in {1..3}
> do
> echo \"number $i\"
> done
number 1
number 2
number 3

但是,相同的语法似乎不适用于ash

> docker run -it --rm alpine /bin/ash
/ # for i in 1 .. 3
> do echo \"number $i\"
> done
number 1
number ..
number 3
/ # for i in {1..3}
> do echo \"number $i\"
> done
number {1..3}
/ # 

我查看了https://linux.die.net/man/1/ash,但无法轻松找到如何执行此操作;有人知道正确的语法吗?

    标签: ash


    【解决方案1】:

    我最终使用带有命令替换的seq

    / # for i in $(seq 10)
    > do echo "number $i"
    > done
    number 1
    number 2
    number 3
    number 4
    number 5
    number 6
    number 7
    number 8
    number 9
    number 10
    

    【讨论】:

      【解决方案2】:

      另一种 POSIX 兼容的替代方案,它不使用潜在的缓慢扩展,是使用

      i=1; while [ ${i} -le 3 ]; do
        echo ${i}
        i=$(( i + 1 ))
      done
      

      【讨论】:

        【解决方案3】:
        就像使用 bash 或 shell 一样:
            $ ash -c "for i in a b c 1 2 3; do echo i = \$i; done"
        
            输出:
        
            我=一个
            我=乙
            我 = c
            我 = 1
            我 = 2
            我 = 3

        【讨论】:

          猜你喜欢
          • 2019-03-23
          • 2021-11-11
          • 2020-07-17
          • 2021-01-25
          • 2020-12-26
          • 2014-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多