【问题标题】:how to set variable for bash loop array [duplicate]如何为bash循环数组设置变量[重复]
【发布时间】:2013-08-01 14:55:58
【问题描述】:

我想要一个像下面这样的 bash 循环函数,顺序递减:

for i in {8..2}
do
...
done

并且8和2可以设置为变量,比如:

start=$1
end=$2

for i in {$start..$end}
do
...
done

但似乎这不起作用。我该怎么做?

感谢所有快速回答,后来我在这里找到了答案。 descending loop with variable bash

解决方案:

start=$1
end=$2

for i in `seq $start -1 $end`
do
...
done

谢谢~

【问题讨论】:

  • 谢谢,但有一点不同,我需要一个减少序列为 {8..2},而不是 {2..8},并且seq $start $end 不起作用。

标签: bash variables loops


【解决方案1】:
$ start=8; end=2; for ((i = start; i >= end; i--)); do echo "${i}"; done
8
7
6
5
4
3
2

【讨论】:

    【解决方案2】:

    不。但这里有一个解决方法

    start=$1
    end=$2
    
    for i in $(seq $start $end)
    do
    ...
    done
    

    【讨论】:

      【解决方案3】:

      你不能在那里使用变量替换,因为 {n..m} 已经是一个。 尝试使用seq

      for i in `seq $start $end`
      do
        ...
      done
      

      或者你可以做一个while循环手动增加循环变量:

      i=$start
      while [ $i -lt $end ]; do
        ...
        : $[i++]
      done
      

      虽然你必须知道$start是小于还是大于$end

      【讨论】:

        猜你喜欢
        • 2019-01-05
        • 2011-06-02
        • 1970-01-01
        • 2021-04-25
        • 2014-03-31
        • 2018-06-24
        • 1970-01-01
        • 2014-03-02
        相关资源
        最近更新 更多