這產生1和10爲什麼bash忽略序列大括號中的' - '?
echo {1..10}
這一個產生在1和10之間的所有奇數之間的所有數值(增量/步長值是2時)
echo {1..10..2}
我嘗試了一下,它變成我是否由-
符號前綴的增量,它沒有任何效果
echo {1..10..-2}
這是爲什麼接受,而不是一個錯誤?
這產生1和10爲什麼bash忽略序列大括號中的' - '?
echo {1..10}
這一個產生在1和10之間的所有奇數之間的所有數值(增量/步長值是2時)
echo {1..10..2}
我嘗試了一下,它變成我是否由-
符號前綴的增量,它沒有任何效果
echo {1..10..-2}
這是爲什麼接受,而不是一個錯誤?
實驗使用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)。
從bash(1)
手冊頁:
當供給增量,它被用作每學期之間的差異。
所以... 技術上輸出確實有每個項之間的差-2。但你仍然告訴它增加而不是減少順序。
謝謝,我第一次沒有注意到一句話。我認爲儘管這樣描述,{1..2..1}應該產生「2 1」,因爲2-1 == 1.但是它對-1和1輸出相同。嗯..或者也許這只是「差異」意味着什麼的問題?我可以想象,「2 1」和「1 2」都有不同的「1」,但是你怎麼能有「-1」的區別? – 2011-05-05 13:29:36
@Johannes認爲這是「絕對的」差異。 – pepoluan 2011-05-06 05:57:16
我的意思是隻討論帶有'-'的步驟,而不是限制之一:(爲什麼需要大小而不是僅僅出錯?當設計一種新語言時,人們會選擇大小而不是隻是給出了一個錯誤? – 2011-05-05 14:23:09
@Johannes:不是開發者的功能,或者開發團隊附近的任何地方,我不能肯定地說,但是......一個原因是爲了儘量減少錯誤的數量;如果你能做一些合理的事情而不會產生錯誤,這樣做。 – 2011-05-05 15:13:41