如何在bash中使用变量进行循环
如何在bash for循环中使用变量?如果我只是使用标准的for循环,它会达到我的期望
for i in {0..3}do
echo "do some stuff $i"
done
这很好。它循环遍历4次,包括0到3,包括打印我的消息并将计数放在末尾。
do some stuff 0do some stuff 1
do some stuff 2
do some stuff 3
当我使用以下for循环尝试相同的操作时,它似乎等于一个字符串,这不是我想要的。
length=3for 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=;ls
或length=; 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