如何在bash中使用变量进行循环

如何在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循环的帮助。

回答:

一种方法是使用eval

for i in $( eval echo {0..$length} )

do

echo "do something right $i"

done

请注意 设置length=;lslength=; rm *(但不要尝试使用后者)时会发生什么。

安全地 ,使用seq

for i in $( seq 0 $length )

do

echo "do something right $i"

done

或者您可以使用c样式的for循环,这也是安全的:

for (( i = 0; i <= $length; i++ )) 

do

echo "do something right $i"

done

以上是 如何在bash中使用变量进行循环 的全部内容, 来源链接: utcz.com/qa/413283.html

回到顶部