这产生1到10之间的所有数字
echo {1..10}
这个产生1到10之间的所有奇数(增量/步长值为2)
echo {1..10..2}
我进行了一些实验,结果是如果我用-
符号作为增量前缀,它就没有效果了
echo {1..10..-2}
为什么这被接受,而不是错误?
答案 0 :(得分:2)
来自bash(1)
手册页:
当提供增量时,它被用作每个术语之间的差异。
所以... 技术上输出 每个术语之间的差异为-2。但你仍然告诉它在序列中增加而不是减少。
答案 1 :(得分:1)
使用Bash 4.1进行实验(与我正在使用的机器上默认安装的3.2版本相反,它不会将符号识别为特殊)显示:
$ echo {12..10..2}
12 10
$ echo {12..10..-2}
12 10
$ echo {12..-10..2}
12 10 8 6 4 2 0 -2 -4 -6 -8 -10
$ echo {12..-10..-2}
12 10 8 6 4 2 0 -2 -4 -6 -8 -10
$ echo {-12..-10..-2}
-12 -10
$ echo {-12..-10..2}
-12 -10
$
因此,似乎增量的方向由前两个数字控制;增量的大小由第三个控制(如果缺少第三个,则默认为1)。