我已经让以下内容生效了:
for i in {2..10}
do
echo "output: $i"
done
它会生成一系列的output: 2
、output: 3
等代码行。
但是,尝试运行以下命令:
max=10
for i in {2..$max}
do
echo "$i"
done
生成以下内容:
output: {2..10}
如何让编译器意识到它应该将$max视为数组的另一端,而不是字符串的一部分?
发布于 2009-09-18 16:18:30
试试for
的算术表达式版本
max=10
for (( i=2; i <= $max; ++i ))
do
echo "$i"
done
这在bash的大多数版本中都可用,并且还应该与Bourne shell (sh)兼容。
发布于 2009-09-18 16:01:20
如果seq
命令在您的系统上可用:
for i in `seq 2 $max`
do
echo "output: $i"
done
如果不是,那么在perl
中使用可怜人的seq
seq=`perl -e "\$,=' ';print 2..$max"`
for i in $seq
do
echo "output: $i"
done
注意那些引号。
发布于 2009-09-18 16:20:54
有不止一种方法可以做到这一点。
max=10
for i in `eval "echo {2..$max}"`
do
echo "$i"
done
https://stackoverflow.com/questions/1445452
复制相似问题