【问题标题】:Bash for - variable in conditionBash for - 条件变量
【发布时间】:2012-04-18 16:04:06
【问题描述】:

这段代码...

#!/bin/bash

cond=10;

for i in {1..$cond}
do
    echo hello;
done

...简直把我逼疯了。这只会打印一个“你好”,因为在i 中有{1..10}

#!/bin/bash

cond=10;

for i in {1..10}
do
    echo hello;
done

打印 10x hello,这是需要的。如何将变量放入条件中?我尝试了不同的方法,但都没有奏效。多么简单的任务啊..提前谢谢你。

【问题讨论】:

  • 大括号扩展不适用于变量。你可以改用$( seq "$cond" ) 之类的东西。
  • 不错的解决方案,乔纳森的解决方案更通用,但我没有想到这个。谢谢

标签: bash variables for-loop


【解决方案1】:

这将起作用:

cond=10;

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

【讨论】:

  • 我是个多么愚蠢的人。我见过很多写for 的方法,但不知何故我错过了最重要的一种。谢谢。
  • (请注意,我在 1 上开始 for,而不是 0 - 不要混淆任何人)
  • 只是添加,在for 条件内,没有必要说$condcond 本身也可以正常工作。
【解决方案2】:

除了已经回答的经典循环之外,您还可以使用一些魔法:

#!/bin/bash

cond=10

for i in $(eval "echo {1..$cond}")
do
    echo hello
done

但是,当然,更难阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多