【问题标题】:bash for loop question [duplicate]bash for循环问题[重复]
【发布时间】:2011-08-09 01:34:26
【问题描述】:

可能重复:
How do I iterate over a range of numbers in bash?

当我这样做时:

RANGE_COUNT=28
for i in {0..$RANGE_COUNT} ; do     echo $i; done

我明白了

{0..28}

当我这样做时:

for i in {0..5} ; do     echo $i; done

我明白了:

0
1
2
3
4
5

这是怎么回事?如何让它按照我的明确意图去做,但显然没有正确说明?

【问题讨论】:

  • thx.. 只是不好的搜索 fu.. 作为 dup 结束问题

标签: bash


【解决方案1】:

你可以使用 c 风格的循环

for((i=1;i<=$RANGE_COUNT;i++))
do
  ...
done

或使用评估

for i in $(eval echo {0..$RANGE_COUNT}); do echo $i; done

其他方法包括while循环

i=0
while [ "$i" -le "$RANGE_COUNT" ]; do echo $i; ((i++)); done

【讨论】:

    【解决方案2】:

    使用算术符号:

    for ((i=0; i<$RANGE_COUNT; i++)); do echo $i; done
    

    【讨论】:

      【解决方案3】:

      来自man bash

      大括号扩展在之前执行 任何其他扩展,以及任何 其他特殊字符 扩展保存在 结果。它是严格的文本。重击 不应用任何句法 上下文的解释 之间的扩展或文本 大括号。

      所以,这是在参数扩展之前作为纯文本宏扩展的早期完成的。

      Shell 是宏处理器和更正式的编程语言之间高度优化的混合体。为了优化典型用例,做出了各种妥协;有时语言会变得更复杂,有时会受到限制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-09
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        相关资源
        最近更新 更多