如何在 bash for 循环中使用变量?如果我只使用标准 for 循环,它会达到我的预期
for i in {0..3}
do
echo "do some stuff $i"
done
这工作正常。它循环 4 次,包括 0 到 3 次,打印我的消息并将计数放在最后。
do some stuff 0
do some stuff 1
do some stuff 2
do some stuff 3
当我用下面的 for 循环尝试同样的事情时,它似乎等于一个字符串,这不是我想要的。
length=3
for i in {0..$length}
do
echo "do something right $i"
done
输出:
do something right {0..3}
我试过了
for i in {0.."$length"} and for i in {0..${length}} (both output was {0..3})
和
for i in {0..'$length'} (output was {0..$length})
他们都没有做我需要的。希望有人可以帮助我。提前感谢任何 bash 专家对 for 循环的帮助。
原文由 Classified 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种方法是使用
eval
:请注意 当您设置
length=;ls
或length=; rm *
时会发生什么(但不要尝试后者)。_安全地_,使用
seq
:或者您可以使用 c 风格的 for 循环,这也是安全的: