如何在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:
eval
for i in $( eval echo {0..$length} ) do echo "do something right $i" done
请注意 设置length=;ls或length=; rm *(但不要尝试使用后者)时会发生什么。
length=;ls
length=; rm *
安全地 ,使用seq:
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