for i in {1..40}
do
echo $i
done
我有
{1..40}
我想要类似的东西
1
2
3
and so on
i
所以我可以在命令的参数中使用该变量。
答案1
在巴什3.0+(以及 zsh 和 ksh93),{1..40}
将扩展到 1-40(含)的数字。在一个POSIX外壳就像破折号(这是/bin/sh
Ubuntu 中的典型)一样,它不会工作(我们称这个问题为“bashism”)。
在具有 GNU 实用程序的系统上,您可以使用以下命令seq
来完成此操作:
for i in $(seq 1 40)
do
echo $i
done
为了更加便携,您必须$i
在while
循环中手动递增:
i=1
while [ $i -le 40 ]
do
echo $i
i=$((i+1))
done
这个便携式版本也稍微快一些,因为它缺少外部命令。