linux - 如何在 bash for 循环中使用变量

标签 linux bash for-loop

<分区>

如何在 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

关于linux - 如何在 bash for 循环中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181787/

相关文章:

c++ - 在 FTP 服务器中正确实现 LIST 命令

bash - 在具有唯一分隔符的文件上使用 bash 中的 cut

python - for 循环中 for 循环的更快替代方案

php - 在文件中查找一个单词,然后将接下来的 10 个值放入数组中

python - 操作系统错误: port/proto not found in for loop

Linux - 搜索文件中的文本并加入另一个文件

java - 使用 Java 获取 awk 返回值

linux - 使用 'push' 或 'sub' x86 指令时如何分配堆栈内存?

sql - 如何在 PSQL 中按文件名顺序运行目录中的 SQL 文件

bash - 如何清除bash中的输入