2011-05-05 2 views
2

이 1 내지 10이 하나가 1과 10 사이의 모든 홀수를 산출왜 bash는 시퀀스 중괄호 확장에서 '-'를 무시합니까?

echo {1..10} 

사이의 모든 번호를 산출한다 (증가/스텝 값 2)을

echo {1..10..2} 

I는 약간 실험, 그리고 온 나는 - 기호 증가를 앞에 경우, 아무 효과

echo {1..10..-2} 

이 없습니다에서 왜 이런 일이 오히려 오류 것보다, 가능합니까? bash(1) 매뉴얼 페이지에서

답변

1
이 (같은 특별한 기호를 인식하지 못하는 내가 사용하고 컴퓨터에 기본적으로 설치되어있는 3.2 버전으로 반대) 실험 배쉬 4.1 보여줍니다

: 그래서

$ 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입니다).

+0

필자는 제한이없는'-'가 붙은 단계에 대해서만 이야기하려고 했었습니다 : (왜 단지 오류가 발생하지 않고 크기를 사용합니까?) 새로운 언어를 설계 할 때, 오류가 발생 했습니까? –

+0

@Johannes : 개발자가 아니거나 개발자 팀과 관련이없는 경우에는 확실하게 말할 수는 없지만 오류의 수를 최소화해야하는 이유 중 하나는 다음과 같습니다. 에러를 발생시키지 않으면 서 현명한 것을하십시오. 그렇게하십시오. –

2

:

증가가 공급되면, 각 기간의 차이로서 사용된다.

그럼 기술적 출력는이 차이 -2 사이 각 용어를 가지고있다. 그러나 당신은 여전히 ​​시퀀스에서 감소하지 않고 증가한다고 말했다.

+0

감사합니다. 처음에는 그 문장 하나를 알아 채지 못했습니다. 그 설명으로 생각해 보면, {1..2..1}은 2-1 == 1이기 때문에 "2 1"을 산출해야한다고 생각 하겠지만 -1과 1. 모두 똑같이 출력합니다. 아니면 아마도 "차이"가 의미하는 것의 문제 일뿐입니다. 나는 "2 1"과 "1 2"모두 "1"차이가 있다고 상상할 수 있습니다. 그렇다면 어떻게 "-1"의 차이를 가질 수 있습니까? –

+1

@ Johannes는 이것을 "절대적인"차이로 간주합니다. – pepoluan